DOMDig:一款针对单页应用的DOM XSS扫描工具
字数 1046 2025-08-12 11:33:45

DOMDig:单页应用DOM XSS扫描工具详解

工具概述

DOMDig是一款专为单页应用程序(SPA)设计的DOM XSS扫描工具,运行于Chromium浏览器环境中。与其他扫描工具不同,DOMDig通过追踪DOM树修改行为和网络请求(XHR/fetch/websocket)来爬取Web应用程序,包括复杂应用如Gmail。

核心特性

  1. 真实浏览器环境:基于Chromium运行,能够准确模拟用户交互
  2. 递归DOM爬取引擎:深度扫描单页应用结构
  3. 全面请求支持:处理XHR、fetch和websocket请求
  4. 高级配置选项
    • Cookie管理
    • 代理设置
    • 自定义Header
    • HTTP认证
  5. 可编程登录序列:支持脚本化认证流程

技术架构

DOMDig基于htcrawl节点库构建,该库同样被htcap工具使用,具有强大的爬取能力,特别适合处理如Gmail等复杂应用。

安装指南

  1. 克隆项目仓库:

    git clone https://github.com/fcavallarin/domdig.git
    
  2. 安装依赖:

    cd domdig && npm i && cd ..
    
  3. 运行工具:

    node domdig/domdig.js
    

使用示例

基本扫描命令:

node domdig.js -c 'foo=bar' -p http://127.0.0.1:8080 https://htcap.org/scanme/domxss.php

参数说明:

  • -c:设置Cookie
  • -p:指定代理

爬取机制

DOMDig采用递归爬取策略:

  1. 追踪DOM树的所有修改
  2. 监控所有XHR/fetch/websocket请求
  3. 自动触发事件模拟真实用户交互
  4. 注入XSS Payload并跟踪执行情况

登录序列配置

登录序列(初始化序列)是JSON格式的指令集,在扫描开始前执行:

[
  ["write", "#username", "demo"],
  ["write", "#password", "demo"],
  ["clickToNavigate", "#btn-login"]
]

支持的操作类型:

  • write <selector> <text>:向指定元素写入文本
  • click <selector>:点击元素
  • clickToNavigate <selector>:点击预期会导致页面跳转的元素
  • sleep <seconds>:等待指定秒数

Payload配置

通过JSON文件(-P选项)加载Payload数组,格式要求:

[
  ";window.___xssSink({0});",
  ""
]

关键要求:

  • 必须包含window.___xssSink({0})函数调用
  • 可使用常见XSS向量如alert(1)

性能表现

在测试案例中,DOMDig展示了强大能力:

  • 持续爬取数小时
  • 捕获约3000个XHR请求(Gmail案例)
  • 演示视频:YouTube链接

许可证

DOMDig遵循Apache-3.0开源许可证协议。

项目地址

GitHub仓库:DOMDig

最佳实践

  1. 针对复杂SPA时,配置详细的登录序列
  2. 根据目标应用特点定制Payload
  3. 对于长时间运行的扫描,使用代理监控
  4. 结合DOM修改和网络请求分析结果
  5. 对关键业务功能进行重点测试
DOMDig:单页应用DOM XSS扫描工具详解 工具概述 DOMDig是一款专为单页应用程序(SPA)设计的DOM XSS扫描工具,运行于Chromium浏览器环境中。与其他扫描工具不同,DOMDig通过追踪DOM树修改行为和网络请求(XHR/fetch/websocket)来爬取Web应用程序,包括复杂应用如Gmail。 核心特性 真实浏览器环境 :基于Chromium运行,能够准确模拟用户交互 递归DOM爬取引擎 :深度扫描单页应用结构 全面请求支持 :处理XHR、fetch和websocket请求 高级配置选项 : Cookie管理 代理设置 自定义Header HTTP认证 可编程登录序列 :支持脚本化认证流程 技术架构 DOMDig基于 htcrawl 节点库构建,该库同样被 htcap 工具使用,具有强大的爬取能力,特别适合处理如Gmail等复杂应用。 安装指南 克隆项目仓库: 安装依赖: 运行工具: 使用示例 基本扫描命令: 参数说明: -c :设置Cookie -p :指定代理 爬取机制 DOMDig采用递归爬取策略: 追踪DOM树的所有修改 监控所有XHR/fetch/websocket请求 自动触发事件模拟真实用户交互 注入XSS Payload并跟踪执行情况 登录序列配置 登录序列(初始化序列)是JSON格式的指令集,在扫描开始前执行: 支持的操作类型: write <selector> <text> :向指定元素写入文本 click <selector> :点击元素 clickToNavigate <selector> :点击预期会导致页面跳转的元素 sleep <seconds> :等待指定秒数 Payload配置 通过JSON文件(-P选项)加载Payload数组,格式要求: 关键要求: 必须包含 window.___xssSink({0}) 函数调用 可使用常见XSS向量如 alert(1) 等 性能表现 在测试案例中,DOMDig展示了强大能力: 持续爬取数小时 捕获约3000个XHR请求(Gmail案例) 演示视频: YouTube链接 许可证 DOMDig遵循Apache-3.0开源许可证协议。 项目地址 GitHub仓库: DOMDig 最佳实践 针对复杂SPA时,配置详细的登录序列 根据目标应用特点定制Payload 对于长时间运行的扫描,使用代理监控 结合DOM修改和网络请求分析结果 对关键业务功能进行重点测试