从零开始搭建轻量级个人XSS平台
一、 前言
决定搭建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平台的更多相关文章
- 【HADOOP】| 环境搭建:从零开始搭建hadoop大数据平台(单机/伪分布式)-下
因篇幅过长,故分为两节,上节主要说明hadoop运行环境和必须的基础软件,包括VMware虚拟机软件的说明安装.Xmanager5管理软件以及CentOS操作系统的安装和基本网络配置.具体请参看: [ ...
- 从零开始搭建gitea代码管理平台
Gitea,一款极易搭建的Git自助服务.如其名,Git with a cup of tea.跨平台的开源服务,支持Linux.Windows.macOS和ARM平台.配置要求低,甚至可以运行在树莓派 ...
- xss平台搭建
1. xss平台搭建 l 将xss平台源码放置在网站目录下 l 进入MySQL管理界面中的phpMyAdmin界面,新建一个XSS平台的数据库 l 修改XSS源码文件目录下的config.php中的数 ...
- 构造个人轻量级XSS平台获取管理员cookie并登录
一.前言 本平台是个人轻量级XSS测试平台,仅作为练习参考. 二.实验环境 服务器操作系统:Centos 7 Web容器:Apache 三.平台搭建过程 安装Apache 安装PHP 安装Git工具 ...
- xss小结-从xss平台搭建到csp规则
0x00前言 xss是跨站脚本攻击,利用嵌入js代码达到‘控制’对方浏览器的作用,测试的时候我们是用alert(1)弹窗,而做CTF也好,实际中的漏洞利用也好一般是用xss获取管理员的cookie 0 ...
- web安全后渗透--XSS平台搭建及使用
xss平台搭建 1.申请一个云主机来进行建站:149.28.xx.xx 2.安装lnmp: wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO ln ...
- 从零开始搭建一个PaaS平台 - 我们要做什么
前言 从最开始的小公司做小网站,到现在进入现在的公司做项目,发现小公司里很多很多工作都是重复的劳动(增删改查),不过想想也是,业务软件最基础的东西不就是增删改查吗. 但是很多时候,这种业务逻辑其实没有 ...
- 【从零开始搭建自己的.NET Core Api框架】(七)授权认证进阶篇
系列目录 一. 创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...
- 【从零开始搭建自己的.NET Core Api框架】(四)实战!带你半个小时实现接口的JWT授权验证
系列目录 一. 创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...
随机推荐
- NOIP2015斗地主(搜索+模拟+贪心)
%%%Luan 题面就不说了,和斗地主一样,给一组牌,求最少打几次. 注意一点,数据随机,这样我们瞎搞一搞就可以过,虽然直接贪心可以证明是错的. 枚举方法,每次搜索按照(三顺子>二顺子>普 ...
- zabbix3.2添加web页面监控(Web monitoring)
应用场景: 存在一种情况:nginx或者httpd服务本身运行正常,但是网页挂了,类似于网页被黑,或者40X之类的... 可以用zabbix把web页面访问也监控起来,第一时间得知web崩溃信息并做相 ...
- 分页技术 -servlet
一.思路: 定义四个分页变量. pagenow 表示第几页,该变量由用户决定的,是变化的. pageSize 每页显示几条记录,由程序定义,也可以由程序定制. pageCount 表示共有多少页,(该 ...
- Java线程池中submit()和execute之间的区别?
一: submit()方法,可以提供Future < T > 类型的返回值. executor()方法,无返回值. execute无返回值 public void execute(Runn ...
- 阻止 form 回车 自动提交
问题:当form表单中只有一个input时,在input中按回车键会自动提交. 解决方案: 1.form元素上加onsubmit="return false"(推荐) 2.多个in ...
- vue2.0项目实战(2)使用 vue-cli 搭建项目
Vue-cli是官方推荐的快速构建单页应用的脚手架.官方给的建议,如果你是初次尝试Vue,哪就老老实实用普通的书写引入js文件,这里牵扯太多的东西,例如webpack .npm .nodejs 等等, ...
- [luogu2292][L语言]
题目链接 思路 这道题我用的是AC自动机的做法. 先把子串挂到trie树上,在单词结尾打标记的时候,标记的是当前单词的长度.然后去上面查询母串的时候,每查询到一个单词,就建立一条线段,这条线段的结尾位 ...
- 用popart构建常染色体单倍型网络(Autosomal haplotypes network construction with popart)
1)将vcf转化为plink格式,假定输入的vcf文件名为:17893893-17898893.vcf,也可以参考链接:将vcf文件转化为plink格式并且保持phasing状态 /vcftools ...
- ActiveMQ与RabbitMQ的区别
1. ActiveMQ/ApolloMQ 优点:老牌的消息队列,使用Java语言编写.对JMS支持最好,采用多线程并发,资源消耗比较大.如果你的主语言是Java,可以重点考虑. 缺点:由于历史悠久,历 ...
- (四点共面) 51nod1265 四点共面
1265 四点共面 1 秒 131,072 KB 0 分 基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Ye ...