Web 安全之 XSS Platform 搭建及使用实践

一、背景#

XSS Platform 是一个非常经典的 XSS 渗透测试管理系统,原作者在 2011 年所开发,由于后来长时间没有人维护,导致目前在 PHP7 环境下无法运行。

笔者最近花了一点时间将源码移植到了 PHP7 环境中,同时增加安装功能;另外还修复之前的代码的一些不严谨语法的问题,并调整了一些表单的样式,同时将源代码放到 GitHub 当中,给有需要的同行研究,为了简化安装步骤,特意写一篇文章来帮助大家。

二、操作概要#

  1. 源码下载
  2. 安装配置
  3. 攻击测试

三、下载源码#

github 地址:https://github.com/78778443/xssplatform

首先通过 cd 命令将代码放到指定位置,参考命令如下

cd /Users/song/mycode/safe/

之后通过 git 下载源码,参考命令如下:

git clone https://github.com/78778443/xssplatform.git

四、安装配置#

4.1 增加虚拟主机#

XSS Platform 需要在根目录中运行,因此需要单独添加一个虚拟主机,笔者以 nginx 环境为例,配置虚拟主机的配置代码如下所示:

server {
    listen       80;
    server_name  xss.localhost;
    root  /Users/song/mycode/safe/xssplatform/;

    rewrite "^/([0-9a-zA-Z]{6})$" /index.php?do=code&urlKey=$1 last;
    rewrite "^/do/auth/(\w+?)(/domain/([\w\.]+?))?$" /index.php?do=do&auth=$1&domain=$3 last;
    rewrite "^/register/(.*?)$" /index.php?do=register&key=$1 last;
    rewrite "^/register-validate/(.*?)$" /index.php?do=register&act=validate&key=$1 last;

    location / {

        index index.html index.htm index.php;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

修改配置文件后,需要重启 nginx 让其配置生效,重启命令参考如下:

nginx -s reload

4.2 添加 HOST 记录#

hosts 文件位置是 /etc/hosts,通过 vim 命令进行编辑,参考命令如下所示:

vim /etc/hosts

在文件中添加一行记录,内容如下所示:

127.0.0.1   xss.localhost

4.3 系统安装#

通过前面添加虚拟主机和添加 host 解析之后,便可以通过浏览器访问此平台,URL 地址为 http://xss.localhost/, 打开后会自动跳转到安装界面,如下图所示

image

点击 我同意此协议按钮之后,将跳转到第二步的填写配置信息界面,在此界面需要填写数据库信息,和管理员账号信息,如下图所示

image

如果数据库信息填写无误,将会看到导入数据成功的提,如下图所示

image

此时便代表安装成功

4.4 功能简介#

先来熟悉一些 XSS Platform 的一些功能,在安装完成界面点击进入首页,会要求先登录,在登录界面输入刚才安装时所填写的管理员账号信息,点击登录即可,登录成功之后会自动跳转到首页,如下图所示

image

在首页中可以看到有一个默认项目,点击 default 后可以看到受害者列表,不过刚刚安装肯定是还没有数据的,如下图所示

image

在图中右上方有一个查看代码的链接,点击进去便可以查看 XSS Platform 预备好的攻击代码,如下图所示

image

五、攻击测试#

现在笔者将正是开始进行一些实践演示,首先会找出一个 permeate 渗透测试系统的 XSS 漏洞,将 XSS Platform 的攻击代码插入进去;

然后模拟受害者访问到被攻击的页面,会到 XSS platform 系统中查看收到的 cookie 值,最后使用接收到的 cookie 来冒充受害者。

permeate 渗透测试系统源码和搭建教程地址可以参考:https://github.com/78778443/permeate

5.1 插入 XSS 代码#

笔者此前已经将 permeate 渗透测试系统搭建成功,下面将在此系统发表一个帖子,并在帖子标题中插入 XSS Platform 中预备好的攻击代码,如下图所示

image

点击发表按钮,便将帖子发布成功,此时假定自己为受害者,访问了此帖子列表,在列表中会读取帖子的标题,帖子 <script> 标签别浏览器执行便不会显示出来,如下图所示

image

5.2 接收 cookie#

可以看到并没有显示出来,再回到 XSS Platform 当中,查看 default 项目中的受害者列表,可以看到一个受害者,如下图所示

image

说明受害者已经成功中招,并且通过攻击代码已经获取到对方的 cookie 值和 header 信息

5.3 替换 cookie#

有了 cookie 值之后,笔者将使用另外一个浏览器,通过修改 cookie 的方式来登录受害者的账户,如下图修改 cookie 的操作
image

再次刷新时,已经变成了登录身份,如下图所示
image

六、图书推荐#

如果对笔者的文章较为感兴趣,可以关注笔者新书《PHP Web 安全开发实战》,现已在各大平台上架销售,封面如下图所示

image


作者:汤青松

日期:2018-12-08

微信:songboy8888

本作品采用《CC 协议》,转载必须注明作者和本文链接
汤青松
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 7

为何在 Nginx+PHP7.2 平台上数据库导入时白屏?

6年前 评论
汤青松

@admin_user 有提示错误信息吗?

6年前 评论

青松 配图裂了

6年前 评论

@daxia 没有错误提示,页面直接就是白的,除了页面的标题,数据库是 MySQL5.6

6年前 评论
汤青松

@wujunze 我这正常呀,你刷新试试..

6年前 评论
汤青松

@admin_user 什么操作系统?

6年前 评论

PHP高级工程师 @ 中公教育
文章
35
粉丝
36
喜欢
169
收藏
77
排名:245
访问:3.9 万
私信
所有博文
社区赞助商