从零开始搭建轻量级个人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 ...
随机推荐
- POJ 1845 Sumdiv(逆元)
题目链接:Sumdiv 题意:给定两个自然数A,B,定义S为A^B所有的自然因子的和,求出S mod 9901的值. 题解:了解下以下知识点 1.整数的唯一分解定理 任意正整数都有且只有唯一的方式 ...
- 【mysql】数据库中的DML DDL DCL TCL 及 Online DDL
DDL(data definition language) : 数据库定义语言 用来定义创建操作表的时候用到的一些sql命令,比如CREATE.ALTER.DROP等等. DML(data manip ...
- angular与vue的应用对比
因为各种笔试面试,最近都没时间做一些值得分享的东西,正好复习一下vue技术栈,与angular做一下对比. angular1就跟vue比略low了. 1.数据绑定 ng1 ng-bind,{{ sco ...
- Java Number & Math 类
// java.lang.Math 常用 // xxxValue() 方法用于将 Number 对象转换为 xxx 数据类型的值并返回. System.out.println(((Integer) 5 ...
- 洛谷P4774 屠龙勇士
啊我死了. 肝了三天的毒瘤题......他们考场怎么A的啊. 大意: 给你若干个形如 的方程组,求最小整数解. 嗯......exCRT的变式. 考虑把前面的系数化掉: 然后就是exCRT板子了. 我 ...
- Nginx概述及安装配置
1.概述 Nginx是一款开源的,高性能的Http和反向代理服务器,同时也是一个IMAP.POP3.SMTP代理服务器:Nginx可以作为一个HTTP服务器进行网站的发布处理,也可以作为反向代理进行负 ...
- rewind()函数
函数名: rewind功 能: 将文件指针重新指向一个流的开头用 法: int rewind(FILE *stream);程序例: #include <stdio.h>#include & ...
- Expected value at 1:0 异常解决方法
有时候自己也很郁闷,明明自己写的是ok的竟然,还报错. 网上查找了这个异常,竟然没有解决方法,后来尝试着去解决,竟然真的解决了. 其实,我又新建一个文件夹,把原先的代码给粘贴复制进去就ok了,其实到现 ...
- oracle中的insert all into,在mysql中的写法
oracle中的insert all into表示插入多条数据,mysql中可以采用: INSERT INTO表名(字段1,字段2..) values <foreach collection=& ...
- MHA环境搭建
准备工作 数据库架构 角色 ip地址 主机名 server_id Master Slave1 Slave2 配置三台服务器ssh免秘钥认证 ssh-keygen -t rsa ssh-copy-id ...