Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
domdig — 针对单页应用的DOM XSS扫描器 | Kitploit
工具/GitHubGitHub/fcavallarin/domdig
漏洞扫描器Web漏洞扫描器动态分析 (沙盒)Web安全模糊测试
GitHubfcavallarin/domdig

domdig

针对单页应用的DOM XSS扫描器

查看仓库
420502411个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

DOMDig

DOMDig 是一个运行在 Chromium 浏览器内部的 DOM XSS 扫描器,可以递归地扫描单页应用(SPA)。
与其他扫描器不同,DOMDig 通过跟踪 DOM 修改和 XHR/fetch/websocket 请求来爬取任何 Web 应用(包括 Gmail),并通过触发事件来模拟真实用户交互。在此过程中,输入字段中会注入 XSS 载荷,并跟踪其执行情况,以发现注入点及相关的 URL 变更。
它基于 htcrawl 构建,这是一个功能强大的 Node 库,足以轻松爬取 Gmail 账户。

主要特性

  • 在真实浏览器(Chromium)内运行
  • 递归 DOM 爬取引擎
  • 处理 XHR、fetch、JSONP 和 websocket 请求
  • 支持 Cookie、代理、自定义请求头、HTTP 认证等
  • 可脚本化的登录序列
  • 序列录制器
  • postMessage 模糊测试器

快速开始

安装

git clone https://github.com/fcavallarin/domdig.git
cd domdig && npm i && cd ..
node domdig/domdig.js

示例

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

执行的检测

DOMDig 可以执行三种不同的检测:

  1. DOM XSS
  2. 存储型 DOM XSS
  3. 模板注入
  4. postMessage XSS

DOM XSS

DOM XSS 检测可配置不同模式,启用不同行为。默认情况下,所有模式均启用。
模式包括:

  1. domscan
  2. fuzz

domscan

爬取 DOM,搜寻用户可注入 JavaScript 代码的位置(例如文本框)。它能发现扫描器无法猜测的注入点。例如,某个搜索功能获取输入框的文本,并将其作为 JSON 字符串放入 URL 的哈希中以触发搜索。

fuzz

对 URL(查询参数和哈希)进行模糊测试,观察我们的代码是否在页面加载时执行。如果没有代码执行,则爬取 DOM 并触发 HTML 事件,希望找到能执行我们载荷的地方。
它还能发现经典的反射型 XSS。

存储型 DOM XSS

在执行 DOM XSS 检测后,DOMDig 爬取同一页面,等待之前使用的载荷被执行。如果发现某个载荷仍在执行,则意味着它能在页面刷新后仍然存在。

模板注入

搜索模板占位符(例如 {var1})可能被作为 JavaScript 代码执行的位置。

报告的漏洞

每个报告的漏洞包含以下字段:

  1. type:漏洞类型,取值可为 domxss、stored 或 templateinj
  2. url:发现漏洞时的页面 URL
  3. payload:使用的载荷
  4. element:注入载荷的 HTML 元素的 CSS 选择器(如有)
  5. description:文本描述
  6. confirmed:当 URL 包含攻击载荷时,漏洞被视为已确认。若未确认,则说明代码已成功执行,但可能需要人工分析以理解注入载荷与 URL 模式之间的关系。

爬虫引擎

DOMDig 使用 htcrawl 作为爬取引擎。
下图展示了递归爬取的过程。
SPA 爬取示意图
下面的视频展示了该引擎爬取 Gmail 的过程。爬取持续了数小时,捕获了约 3000 个 XHR 请求。

爬取 Gmail

登录序列

登录序列(或称初始序列)是一个 JSON 对象,包含扫描开始前要执行的一系列操作。列表中的每个元素是一个数组,其中第一个元素是操作名称,其余元素是这些操作的"参数"。
操作包括:

  • navigate
  • write
  • select
  • click
  • clickToNavigate
  • sleep
  • setTarget

示例

[
   ["navigate", "https://target.local/login-page"],
   ["write", "#username", "demo"],
   ["write", "#password", "demo"],
   ["sleep", 2],
   ["clickToNavigate", "#btn-login"]
]

载荷文件

载荷可以从 JSON 文件(-P 选项)加载,格式为字符串数组。要构建自定义载荷,必须使用字符串 window.___xssSink({0}) 作为要执行的函数(而不是经典的 alert(1))。

示例

[
   ';window.___xssSink({0});',
   '<img src="https://raw.githubusercontent.com/fcavallarin/domdig/master/a" onerror="window.___xssSink({0})">'
]
下载工具