Web安全之XSS Platform搭建及使用实践
一、背景
XSS Platform 是一个非常经典的XSS渗透测试管理系统,原作者在2011年所开发,由于后来长时间没有人维护,导致目前在PHP7环境下无法运行。
笔者最近花了一点时间将源码移植到了PHP7环境中,同时增加安装功能;另外还修复之前的代码的一些不严谨语法的问题,并调整了一些表单的样式,同时将源代码放到GitHub当中,给有需要的同行研究,为了简化安装步骤,特意写一篇文章来帮助大家。
二、操作概要
- 源码下载
- 安装配置
- 攻击测试
三、下载源码
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/
,打开后会自动跳转到安装界面,如下图所示
点击 我同意此协议
按钮之后,将跳转到第二步的填写配置信息界面,在此界面需要填写数据库信息,和管理员账号信息,如下图所示
如果数据库信息填写无误,将会看到导入数据成功的提,如下图所示
此时便代表安装成功
4.4 功能简介
先来熟悉一些XSS Platform的一些功能,在安装完成界面点击进入首页,会要求先登录,在登录界面输入刚才安装时所填写的管理员账号信息,点击登录即可,登录成功之后会自动跳转到首页,如下图所示
在首页中可以看到有一个默认项目,点击default
后可以看到受害者列表,不过刚刚安装肯定是还没有数据的,如下图所示
在图中右上方有一个查看代码的链接,点击进去便可以查看XSS Platform预备好的攻击代码,如下图所示
五、攻击测试
现在笔者将正是开始进行一些实践演示,首先会找出一个permeate渗透测试系统的XSS漏洞,将XSS Platform的攻击代码插入进去;
然后模拟受害者访问到被攻击的页面,会到XSS platform系统中查看收到的cookie值,最后使用接收到的cookie来冒充受害者。
permeate 渗透测试系统源码和搭建教程地址可以参考:https://github.com/78778443/permeate
5.1 插入XSS代码
笔者此前已经将permeate渗透测试系统搭建成功,下面将在此系统发表一个帖子,并在帖子标题中插入XSS Platform
中预备好的攻击代码,如下图所示
点击发表按钮,便将帖子发布成功,此时假定自己为受害者,访问了此帖子列表,在列表中会读取帖子的标题,帖子<script>
标签别浏览器执行便不会显示出来,如下图所示
5.2 接收cookie
可以看到并没有显示出来,再回到XSS Platform当中,查看default
项目中的受害者列表,可以看到一个受害者,如下图所示
说明受害者已经成功中招,并且通过攻击代码已经获取到对方的cookie值和header信息
5.3 替换cookie
有了cookie值之后,笔者将使用另外一个浏览器,通过修改cookie的方式来登录受害者的账户,如下图修改cookie的操作
再次刷新时,已经变成了登录身份,如下图所示
六、图书推荐
如果对笔者的文章较为感兴趣,可以关注笔者新书《PHP Web安全开发实战》,现已在各大平台上架销售,封面如下图所示
作者:汤青松
日期:2018-12-08
微信:songboy8888
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
windows mysql5.7 InnoDB 通过frm与ibd对数据进行恢复
参考:https://www.jianshu.com/p/50a2e13cd5cf 安装MySQL Utilities 下载地址:https://dev.mysql.com/downloads/utilities/ 下载完后直接安装即可 如果运行时需要python就下载 https://dev.mysql.com/downloads/connector/python/ 本机还需要安装与需要恢复数据的一样版本的Mysql 使用mysqlfrm命令读取frm的表结构 把需要进行数据恢复的frm文件放到一个目录里 mysqlfrm --diagnostic ./frm文件目录/ 这样就可以获得数据表的结构了。 创建新的数据库 把第二步获得的数据表结构执行,(利用旧的脚本)创建表。 对已创建的表进行表空间卸载 ALTER TABLE 表名 DISCARD TABLESPACE; 每个表都进行一次空间卸载 停掉MYSQL服务 把原始数据文件里的ibd文件拷到新的数据库文件夹里这里要注意把拷过来的ibd文件的所有者为mysql chwon mysql:mysql 数据库文件夹/*启动MYSQL服务...
- 下一篇
MQTT获取离线消息小议
概述 微消息队列MQ for IoT在处理离线消息时,为了简化离线消息获取机制,微消息队列系统在客户端成功建立连接并通过权限校验后,会自动加载离线消息并下发到客户端,但是实际在使用过程中会出现消费端启动后迟迟无法获取离线消息的问题,本文主要介绍延迟消息的发送与接收环节需要注意的问题。 协议相关 注意在使用SDK进行离线消息的发送过程中需要特别注意QoS和cleanSession两个参数。 QoS 指代消息传输的服务质量(主要针对发送端) 取值 1 2 3 意义 最多分发一次 最多分发一次 仅分发一次 cleanSession 建立 TCP 连接后是否关心之前状态(主要针对接收端) true | false | ------- | ------- | 客户端再次上线时,将不再关心之前所有的订阅关系以及离线消息 | 客户端再次上线时,还需要处理之前的离线消息,
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2全家桶,快速入门学习开发网站教程
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主