使用Sboxr实现DOM XSS漏洞的自动挖掘与利用
字数 2920 2025-08-18 11:38:28
DOM XSS漏洞的自动挖掘与利用:基于Sboxr的实践指南
1. DOM XSS概述
1.1 定义与特点
DOM XSS(Document Object Model Cross-Site Scripting)是一种特殊类型的XSS漏洞,其特点包括:
- 完全在客户端执行,不依赖于服务器端处理
- 基于文档对象模型(DOM)操作产生的漏洞
- 常见于JavaScript富应用(单页应用等)
- 传统扫描工具难以检测
1.2 与常规XSS的区别
| 特征 | DOM XSS | 传统XSS |
|---|---|---|
| 执行位置 | 纯客户端 | 服务端+客户端 |
| 检测难度 | 较高 | 相对较低 |
| 依赖因素 | DOM操作 | 服务端输出 |
| 触发方式 | 无需刷新页面 | 可能需要页面刷新 |
1.3 常见漏洞源
location对象相关属性(hash, search等)document.referrerwindow.name- 本地存储(localStorage, sessionStorage)
- 客户端数据库操作结果
2. Sboxr工具介绍
2.1 核心功能
Sboxr是一个专门用于测试JavaScript富应用的动态分析工具,主要功能包括:
- 监控JavaScript执行流程
- 追踪用户可控数据的传播路径(源到接收器)
- 识别潜在的代码执行点
- 提供详细的执行上下文分析
2.2 工作原理
- 作为中间人代理运行
- 注入DOM传感器代码到目标页面
- 监控以下内容:
- JavaScript使用情况
- 数据源和接收器
- 变量赋值
- 函数调用链
2.3 系统要求
- 操作系统:Windows/Linux(本文基于Ubuntu 18.04)
- 运行时:.NET Core SDK
- 浏览器:Chrome(本文使用72版本)
3. 环境搭建
3.1 安装步骤
-
安装.NET Core SDK
- Linux(Ubuntu):
# 参考 https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-current wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get update sudo apt-get install dotnet-sdk-3.1 - Windows:
- 从 https://dotnet.microsoft.com/download 下载安装
- Linux(Ubuntu):
-
获取Sboxr
- 从官网 https://sboxr.com 下载
- 解压后得到
Sboxr.dll文件
-
启动Sboxr
dotnet Sboxr.dll- Web管理界面:http://localhost:3333
- 代理端口:3331
3.2 浏览器配置
由于Sboxr不支持SOCKS代理,需特殊配置Chrome:
Linux配置:
mkdir -p ~/.chrome
/opt/google/chrome/chrome -incognito \
--ignore-certificate-errors \
--proxy-server=http=http://localhost:3331\;https=http://localhost:3331 \
--user-data-dir=~/.chrome
Windows配置:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -incognito \
--ignore-certificate-errors \
--proxy-server=http=http://localhost:3331;https=http://localhost:3331 \
--user-data-dir="C:\Users\%Username%\AppData\Local\Temp\TestChromeProxy"
3.3 代理链配置(可选)
如需结合Burp或OWASP ZAP:
- 访问 http://localhost:3333/console
- 在"HTTP Sensor"设置中配置上游代理
- 输入Burp/ZAP的IP和端口
4. 漏洞挖掘实战
4.1 练习1:基于location.hash的XSS
漏洞分析:
- 访问 https://domgo.at/cxss/example/1
- Sboxr检测流程:
- 数据源:
location.hash - 接收器:
HTMLElement.innerHTML - 执行路径:用户控制的hash值未经处理直接赋值给innerHTML
- 数据源:
验证步骤:
- 构造恶意URL:
https://domgo.at/cxss/example/1#<svg onload=alert(document.domain)> - URL编码后:
https://domgo.at/cxss/example/1#%3Csvg%20onload%3Dalert(document.domain)%3E - 访问后触发XSS弹窗
Sboxr分析要点:
- 在Code Execution面板查看执行链
- 通过"View event location details"查看具体代码位置
- 确认数据从源到接收器的完整传播路径
4.2 练习2:基于document.referrer的XSS
漏洞分析:
- 访问流程必须通过重定向(直接访问无效)
- 关键因素:
- 数据源:
document.referrer - 接收器:参数解析后的innerHTML赋值
- 特殊要求:必须从包含payload参数的页面跳转过来
- 数据源:
利用步骤:
- 创建恶意HTML文件(exercise2.html):
<html> <body> <h2>PoC for Exercise 2</h2> <script> window.location="https://domgo.at/cxss/example/2?payload=<svg onload=alert(document.domain)>" </script> </body> </html> - 本地托管该文件(可用Python快速搭建):
python3 -m http.server 80 - 访问 http://localhost/exercise2.html
- 自动跳转后触发XSS
关键注意点:
- 必须通过页面跳转触发,直接修改Referer头无效
- payload需要URL编码:
window.location="https://domgo.at/cxss/example/2?payload=%3Csvg%20onload%3Dalert(document.domain)%3E"
5. 高级技巧与最佳实践
5.1 Sboxr使用技巧
-
敏感源监控清单:
location对象所有属性document.cookiewindow.name- 存储API(localStorage/sessionStorage)
- Web数据库操作结果
-
危险接收器清单:
innerHTML/outerHTMLdocument.write/document.writelneval/setTimeout/setInterval(含字符串参数)Function构造函数location赋值操作
-
数据分析方法:
- 使用"View Code Execution"追踪完整链条
- 关注从源到接收器的每个处理环节
- 特别注意编码/解码操作
5.2 漏洞利用开发
-
PoC构造原则:
- 优先使用
<svg onload=alert(1)>而非传统<script> - 考虑上下文限制(HTML/JS/URL等)
- 测试多种编码方式绕过可能的过滤
- 优先使用
-
常见绕过技巧:
// 大小写混淆 <ScRiPt>alert(1)</ScRiPt> // 编码绕过 // 利用JavaScript伪协议 javascript:alert(document.domain) // 利用SVG事件 <svg/onload=alert(1)>
5.3 防御建议
-
输入处理:
- 对所有不可信数据实施严格的输出编码
- 根据上下文使用合适的编码函数:
- HTML实体编码:
<→< - JavaScript编码:
\x3cscript\x3e - URL编码:
%3Cscript%3E
- HTML实体编码:
-
安全API使用:
- 使用
textContent代替innerHTML - 使用
addEventListener而非内联事件处理 - 避免将用户输入直接传递给
eval()等动态执行函数
- 使用
-
内容安全策略(CSP):
Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline'
6. 扩展资源
-
官方文档:
- Sboxr官网:https://sboxr.com
- OWASP DOM XSS:https://www.owasp.org/index.php/DOM_Based_XSS
-
练习平台:
- DOMGOAT靶场:https://domgo.at
- Appsecco解决方案:https://appsecco.com/books/
-
相关工具:
- Burp Suite DOM Invader
- OWASP ZAP DOM XSS扫描插件
- Chrome DevTools调试技巧
7. 总结
本文详细介绍了使用Sboxr工具进行DOM XSS漏洞挖掘的完整流程,涵盖环境搭建、工具配置、漏洞分析和利用开发等关键环节。通过两个实际案例演示了从检测到验证的全过程,并提供了防御建议和进阶技巧。DOM XSS作为客户端安全的重要威胁,需要测试人员深入理解JavaScript执行环境和DOM操作机制,而Sboxr为此类漏洞的发现提供了强有力的支持。