一、 前言

决定搭建XSS平台是因为自己想深入学习一下XSS相关的知识,多多进行实践,上网搜索了一下XSS平台有很多,但是总觉得不是很安全,这个毕竟敏感信息要传输到陌生人的服务器上,而且服务器端测试代码存在不可控性,所以决定自行搭建XSS平台做学习之用。在搭建完成后和我的导师徐松进行了交流,发现这款XSS平台除了在GitHub上有作者专业化的说明外,在网上没有任何关于这款XSS平台搭建方面的教程,最后在导师的鼓励和帮助下促成了这篇分享,也顺便记录一下自己所出现的问题方便以后回顾。

1.  什么是XSS平台

XSS平台可以辅助安全测试人员对XSS相关的漏洞危害进行深入学习,了解XSS的危害重视XSS的危害,如果要说XSS可以做哪些事情,XSS可以做js能够做的所有事情。包括但不限于:窃取Cookie、后台增删改文章、钓鱼、利用XSS漏洞进行传播、修改网页代码、网站重定向、获取用户信息(如浏览器信息,IP地址等)等。

2.  实验环境

涉及到的知识:Git、Linux基础、Apache简单配置、PHP简单配置、iptables防火墙设置

XSS平台项目名称:BlueLotus_XSSReceiver

作者:firesun(来自清华大学蓝莲花战队)

项目地址:https://github.com/firesunCN/BlueLotus_XSSReceiver

服务器操作系统:Centos 6.6

web容器:Apache

脚本语言:PHP

服务器IP地址:服务器IP地址

虚拟主机:192.168.245.133

web应用:DVWA

3.  推荐理由

推荐理由:界面布局清新、数据可阅读性好、IP获取准确、IP地址定位精准、轻量级(无需数据库)、对数据存储进行加密、GitHub开源方便与开发者交流(生命周期长)。

二、 XSS平台的搭建过程

1、安装Apache

#安装Apache

yuminstall httpd –y

#启动apache服务

servicehttpd start

#当我们在浏览器访问我们服务器时出现此页面时,代表着Apace已经安装成功

2、安装PHP

#安装PHP环境

yuminstall php –y

3、安装Git工具

#安装Git工具

yuminstall git –y

4、从GitHub克隆XSS平台源码

#删除Apache默认页面

rm -Rf/var/www/*

#在www目录下创建网站文件夹

mkdir/var/www/xss

#从GitHub上获取XSS平台源码

gitclone https://github.com/firesunCN/BlueLotus_XSSReceiver.git /var/www/xss/

#赋予权限

chmod –R777 /var/www/xss/

5、配置Apache

#新建虚拟主机配置文件夹

mkdir/etc/httpd/conf/vhost

#新建虚拟主机配置文件

touch/etc/httpd/conf/vhost/httpd-vhosts.conf

#编辑虚拟机配置文件

vi /etc/httpd/conf/vhost/httpd-vhosts.conf

#按A键进入编辑状态

<VirtualHost *:80>

DocumentRoot "/var/www/xss"

DirectoryIndex admin.php

</VirtualHost>

#对文件进进行保存

按esc键退出编辑状态,进入到命令模式

输入:wq命令然后回车保存编辑的文本

#编辑httpd.conf文件、将刚刚添加虚拟主机文件包含到配置文件中

cp/etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak

vi/etc/httpd/conf/httpd.conf

修改httpd.conf 292行

修改303行为 Options ExecCGIFollowSymLinks(允许服务器使用CGI)

修改338行为AllowOverrideAll

在配置文件末尾插入以下内容

Include/etc/httpd/conf/vhost/httpd-vhosts.conf

#设置Apache开机启动

chkconfighttpd on

#重新载入Apache配置文件

servicehttpd reload

6、安装XSS平台

#访问http://服务器IP地址

点击安装

# 设置后台登录密码、数据加密密码(一定记得要修改)

#其余选项可保持默认,然后提交

#安装成功

#登录后台,访问http://服务器IP地址/login.php

三、 XSS平台的功能测试

1、获取Cookie

#配置公共模板default.js,修改js代码中的网站地址为http://服务器IP地址/index.php

#最后,点击下方的修改,保存修改

# 进入“我的js”模块

#设置js文件名称

#选择default.js模板

#插入模板

#新增

#选择“新增”保存js测试代码

#选择“生成payload”

实例:测试站点Dvwa XSS(stored)测试部分

#刷新Dvwa XSS(stored)页面

#XSS平台接收到获取的Cookie

2、与同类XSS平台比较

#下面是一套比较主流的XSS平台源码程序(http://xssa.me)所展示获取的Cookie

#同刚刚我们所使用的平台做一对比,发现我们的这个平台还是有一些自己的特点的:

  • 界面简洁,更加的人性化

  • 数据的可阅读性

  • 数据获取准确

  • 定位精准(使用纯真ip数据库)

  • 网站收信提示

  • 轻量级、安全(不使用数据库)

  • 密码输错五次封IP(解封需要删除/var/www/xss/data/forbiddenIPList.dat中的封禁IP)

  • 对XSS记录、IP封禁列表、js的说明(仅说明)加密,可设置是否加密、加密密码以及加密方式(AES、RC4)

  • 内置编辑器支持js语法高亮、语法错误检查

  • 网站安全配置

1、配置Apache

#编辑httpd.conf文件

vi/etc/httpd/conf/httpd.conf

# 44行修改为ServerTokensProd

# 536行改为修改为ServerSignatureOff

servicehttpd reload

#以上两条命令执行后前后结果对比

2、配置PHP

#编辑php.ini

cp/etc/php.ini /etc/php.ini.bak

vi /etc/php.ini

#修改432行为expose_php= Off

servicehttpd reload

#修改前后对比

3、配置iptables状态检测防火墙

只对外开放:HTTP、SSH服务

#修改ssh监听端口

vi/etc/ssh/sshd_config

#启动防火墙

serviceiptables start

#清除防火墙规则

iptables–F

#查看当前防火墙规则

iptables-L

#INPUT链:允许已经建立连接和在已建立的连接的基础上对服务器连接发起的连接

iptables-A INPUT -d 服务器IP地址 -mstate --state ESTABLISHED,RELATED -j ACCEPT

#INPUT链:允许对服务器http80端口新发起的连接

iptables-A INPUT -d服务器IP地址-p tcp --dport 80 -m state --state NEW –j ACCEPT

#INPUT链:允许对服务器ssh23233端口新发起的连接

iptables-A INPUT -d服务器IP地址-p tcp --dport 23233 -m state --state NEW -j ACCEPT

#OUTPUT链:允许已经建立连接和在已建立的连接的基础上服务器对其它地址连接发起的连接

iptables-A OUTPUT -s服务器IP地址-m state --state ESTABLISHED,RELATED -j ACCEPT

#OUTPUT链:允许服务器向外部服务器DNS53(udp)端口新发起DNS解析请求(yum等服务需要用到)

iptables-A OUTPUT -s服务器IP地址-p udp --dport 53 -m state --state NEW -j ACCEPT

#OUTPUT链:允许服务器向外部服务器http80端口新发起请求(yum等需要用到)

iptables-A OUTPUT -s服务器IP地址-p tcp --dport 80 -m state --state NEW -j ACCEPT

#OUTPUT链:允许服务器向外部服务器https443端口新发起请求(git等需要用到)

iptables-A OUTPUT -s服务器IP地址-p tcp --dport 443 -m state --state NEW -j ACCEPT

#配置防火墙默认进出规则:拒绝所有数据包

iptables-P INPUT DROP

iptables-P OUTPUT DROP

#保存防火墙规则

serviceiptables save

#设置防火墙开机自启动

chkconfigiptables on

4、SSH防暴力破解

#编辑脚本

vi/root/script/ssh-ban.sh

#添加可执行权限

chmod a+xssh-ban.sh

#设置执行计划(每5分钟执行一次检测)

echo"*/5 * * * * sh /root/script/ssh-ban.sh" >>/var/spool/cron/root

#开启服务

service crondstart

#设置开机启动

chkconfigcrond on

#输错5次密码被Ban后的效果

五、 遇到的问题

1、无法获取Cookie

解决方法:js代码“网站地址”处填http://服务器IP地址/index.php

解决思路:打开调试模式-刷新-发现确实有我们的xss-js代码执行-找到返回的数据包-发现返回数据包302跳转到XSS平台主页;

此时查看网站根目录发现index.php这个文件,因为我们的主页是admin.php,而index.php这个页面似乎并没有使用,打开后猜测其内容应该是接收处理发送来的参数

再次查看GitHub README文件,发现

于是更加确定了自己猜想应该是对的,此处网站地址应该填http://服务器IP地址/index.php用来接收参数,而不是填网站ip地址http://服务器IP地址。

六、 总结

在这次搭建XSS平台学习XSS利用技术的过程中,还是遇到了一些问题,比如:服务器端js代码的配置、一些新功能的尝试等。过程中锻炼了自己的动手能力,了解了XSS平台基本网站结构,帮助自己巩固了以前学习的知识。这个平台上还有一些js利用代码的功能还不是很了解,以后在工作之余可以学习学习。希望以后可以向大家多学习相关知识,不断提升自己,努力能够为团队出一份自己的绵薄之力。

从零开始搭建轻量级个人XSS平台的更多相关文章

  1. 【HADOOP】| 环境搭建:从零开始搭建hadoop大数据平台(单机/伪分布式)-下

    因篇幅过长,故分为两节,上节主要说明hadoop运行环境和必须的基础软件,包括VMware虚拟机软件的说明安装.Xmanager5管理软件以及CentOS操作系统的安装和基本网络配置.具体请参看: [ ...

  2. 从零开始搭建gitea代码管理平台

    Gitea,一款极易搭建的Git自助服务.如其名,Git with a cup of tea.跨平台的开源服务,支持Linux.Windows.macOS和ARM平台.配置要求低,甚至可以运行在树莓派 ...

  3. xss平台搭建

    1. xss平台搭建 l 将xss平台源码放置在网站目录下 l 进入MySQL管理界面中的phpMyAdmin界面,新建一个XSS平台的数据库 l 修改XSS源码文件目录下的config.php中的数 ...

  4. 构造个人轻量级XSS平台获取管理员cookie并登录

    一.前言 本平台是个人轻量级XSS测试平台,仅作为练习参考. 二.实验环境 服务器操作系统:Centos 7 Web容器:Apache 三.平台搭建过程 安装Apache 安装PHP 安装Git工具 ...

  5. xss小结-从xss平台搭建到csp规则

    0x00前言 xss是跨站脚本攻击,利用嵌入js代码达到‘控制’对方浏览器的作用,测试的时候我们是用alert(1)弹窗,而做CTF也好,实际中的漏洞利用也好一般是用xss获取管理员的cookie 0 ...

  6. web安全后渗透--XSS平台搭建及使用

     xss平台搭建 1.申请一个云主机来进行建站:149.28.xx.xx 2.安装lnmp: wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO ln ...

  7. 从零开始搭建一个PaaS平台 - 我们要做什么

    前言 从最开始的小公司做小网站,到现在进入现在的公司做项目,发现小公司里很多很多工作都是重复的劳动(增删改查),不过想想也是,业务软件最基础的东西不就是增删改查吗. 但是很多时候,这种业务逻辑其实没有 ...

  8. 【从零开始搭建自己的.NET Core Api框架】(七)授权认证进阶篇

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

  9. 【从零开始搭建自己的.NET Core Api框架】(四)实战!带你半个小时实现接口的JWT授权验证

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

随机推荐

  1. Docker部署SonarQube

    依赖 CentOS 7.2+ docker 1.13+ docker-compose 1.20+ 将下面文件内容另存为docker-compose.yml文件,执行docker-compose up ...

  2. Ubuntu Server 18.04 网络设置不生效的解决

    在Ubuntu18.04中,传统的配置/etc/network/interfaces已无用https://www.cnblogs.com/dunitian/p/6658578.html 新方法:修改 ...

  3. pagehelper 使用

    MySQL对分页的支持 简单来说MySQL对分页的支持是通过limit子句.请看下面的例子. limit关键字的用法是 LIMIT [offset,] rows offset是相对于首行的偏移量(首行 ...

  4. 论一个蒟蒻的脑子里可以有多少坑(貌似咕了……目前更新保持在noip阶段)

    就是错题整理了,其实也会把一些不该犯的失误整进来. 其实之前一直拖着不想写,直到某次模拟赛,看错了2道题,顺便爆了一道题的int(没错第一个点就会爆)之后爆零了,吓得我赶紧把这篇博客搞出来了..... ...

  5. A1046. Shortest Distance

    The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed t ...

  6. 内部git常用总结

    上库git常用命令总结   http://3ms.huawei.com/hi/group/1531/wiki_4955279.html?for_statistic_from=all_group_wik ...

  7. ImageMagick - 智能的灰度空间(GRAYColorspace)让人窒息

    今天在处理一张 gray.jpg 图片时,发现生成的图片色彩空间是: GRAYColorspace 可我在代码中明明设置了: MagickWand * mw = NewMagickWand (); M ...

  8. Fiddler安装证书

    1.打开Fiddler,点击工具栏中的Tools——>Fiddler Options…       2.切换到 HTTPS 选项卡,勾选 Capture HTTPS CONNECTs,勾选 De ...

  9. MySQL常用的一些函数

    内容太多,走链接: MySQL函数大全

  10. postman 抓包工具charles的使用

    1.直接打开charles,然后,如果有https的话,需要安装证书,然后,设置代理 2.如果不是https的,不需要设置代理,直接抓取就可以 先安装证书: 然后设置代理:               ...