SoheilKhodayari/DOMClobbering

GitHub: SoheilKhodayari/DOMClobbering

一个用于测试 Web 浏览器抵御 DOM Clobbering 攻击能力的综合框架,集成了自动化浏览器测试、Payload 生成器和交互式知识库。

Stars: 60 | Forks: 9

DOMC-BT

DOMC-BT

网站 | 浏览器测试 | Wiki | 标记 | Payload 生成器

# DOM Clobbering 浏览器测试框架 ![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/cas/90/904576a138b0f0ea19b54c8da11d6e4593ea4ad2349770c70ed261b00f0d6e27.svg) [![Node](https://img.shields.io/badge/node%40latest-%3E%3D%206.0.0-brightgreen.svg)](https://img.shields.io/badge/node%40latest-%3E%3D%206.0.0-brightgreen.svg) [![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) [![Open Source?Yes!](https://badgen.net/badge/Open%20Source%20%3F/Yes%21/blue?icon=github)](https://github.com/Naereen/badges/) 一个用于测试 Web 浏览器抵御 DOM Clobbering 的综合框架。DOMC-BT 会穷举生成候选的 DOM Clobbering 标记测试用例,并自动在 Web 浏览器中对其进行测试。 DOMC-BT 补充了 [`TheThing`](https://github.com/SoheilKhodayari/TheThing),这是一个基于 [JAW](https://soheilkhodayari.github.io/JAW/) 的 DOM Clobbering 静态-动态安全分析工具。 DOMC-BT 拥有一个可访问的网站:[https://soheilkhodayari.github.io/DOMClobbering](https://soheilkhodayari.github.io/DOMClobbering)。 **HTML Sanitizer 测试流水线**:请查看 [HTML-ST](https://github.com/SoheilKhodayari/html-sanitizer-testing-pipeline) 仓库! ## ✨ 本仓库包含什么? - **[自动化浏览器测试](https://github.com/SoheilKhodayari/DOMClobbering/tree/master/domc_tests)** - 一个用于提供 DOM Clobbering 测试页面的 django webapp - 通过访问单个 URL 来测试您的浏览器 - Docker 容器化 - 针对 [BrowserStack](https://www.browserstack.com/) 中的浏览器实例池[运行测试用例](https://github.com/SoheilKhodayari/DOMClobbering/blob/master/run_browserstack.py) - **[DOM Clobbering 攻击 Payload 生成器](https://github.com/SoheilKhodayari/DOMClobbering/tree/master/domc_payload_generator)** - 在线 [演示](https://soheilkhodayari.github.io/DOMClobbering/domc_payload_generator/) - **[交互式 Clobbering Payload 列表](https://github.com/SoheilKhodayari/DOMClobbering/tree/master/domc_markups)** - 针对 `mobile`(移动端)和 `desktop`(桌面端)浏览器的 Clobbering 标记 - 在线 [演示](https://soheilkhodayari.github.io/DOMClobbering/domc_markups/list) - **[DOM Clobbering Wiki](https://github.com/SoheilKhodayari/DOMClobbering/tree/master/domc_wiki)** - Clobbering 技术 - 易受攻击的代码模式 - 防御措施 - 在线 [演示](https://soheilkhodayari.github.io/DOMClobbering/domc_wiki/index) ## 💥 什么是 DOM Clobbering? [DOM Clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering) 是一种攻击技术,攻击者通过将非脚本 HTML 标记注入到易受攻击的网页中,并将最初安全的标记转换为可执行代码,从而实现任意的客户端代码执行。 DOM Clobbering 源于 JavaScript 变量与[命名 HTML 标记](https://html.spec.whatwg.org/multipage/window-object.html#named-access-on-the-window-object)之间的命名冲突,攻击者通过注入 `id` 或 `name` 属性与安全敏感变量名相匹配的 HTML 元素来迷惑 Web 应用,例如用于获取远程内容的变量(如脚本 `src`)。 有关更多信息,请参见[这里](https://soheilkhodayari.github.io/DOMClobbering/domc_wiki/)。 ## 🚀 浏览器测试 ### 🏭 构建 您可以通过以下方式构建该工具: ``` $ docker-compose build web $ docker-compose build browserstack ``` ### 🔥 在您的浏览器中运行测试 运行提供测试 DOM Clobbering 网页的 Web 应用程序: ``` $ docker-compose up web ``` 现在,您应该能够访问 `http://127.0.0.1:3000` 上的测试列表,并通过单击链接在浏览器中运行其中任何一个。 **注意:** 测试页面会自动重定向到下一个测试网页,因此只需点击第一个测试即可运行所有测试用例。 ### 🎡 通过 BrowserStack 运行测试 您可以使用 [BrowserStack](https://www.browserstack.com/) 同时在许多浏览器上运行 DOM Clobbering 测试套件。 **第一步:** 在 `.json` 文件中指定您想要测试的浏览器配置。有关可用浏览器列表的更多信息,请参见[这里](https://www.browserstack.com/automate/capabilities)。您可以在项目根目录的 [browser_capabilities.json](browser_capabilities.json) 中找到一个示例。 **第二步:** 运行托管测试页面的 webapp,并设置一个代理,以便 BrowserStack 可以访问此 webapp: ``` $ docker-compose up web $ ./browserstack_proxy ACCOUNT_KEY ``` **注意:** 在上述命令中,将 `ACCOUNT_KEY` 替换为您的 `BrowserStack` [访问密钥](https://www.browserstack.com/docs/iaam/security/manage-access-keys)。 **注意:** 要设置代理,您可能需要下载相应的 `BrowserStack` [二进制文件](https://www.browserstack.com/docs/local-testing/releases-and-downloads)并将其重命名为 `BrowserStackLocal`。有关更多信息,请参阅官方的 BrowserStack 本地测试[文档](https://www.browserstack.com/docs/local-testing)。 **第三步:** 运行名为 `browserstack` 的自动化 docker 服务以执行测试: ``` $ docker-compose up browserstack ``` ## ➰ DOM Clobbering 标记 DOM Clobbering 标记的原始数据位于项目根目录的 [`domc_markups`](./domc_markups) 文件夹中,适用于不同的 `mobile` 和 `desktop` 浏览器及其版本。 Clobbering 标记的交互式版本可在[此处](https://soheilkhodayari.github.io/DOMClobbering/domc_markups/list)在线获取,它提供了一个在线浏览器测试解决方案。要在您的浏览器中测试每个标记,只需单击它即可。 发现了一个不在[在线列表](https://soheilkhodayari.github.io/domc_markups/list)中并且您想要分享的新 Clobbering 标记?那么,请在[这里](https://github.com/SoheilKhodayari/DOMClobbering/pulls)提交一个新的 PR。 ## 📚 DOM Clobbering Wiki 本仓库拥有最早的 DOM Clobbering 在线 Wiki 之一,可通过 [https://soheilkhodayari.github.io/DOMClobbering](https://soheilkhodayari.github.io/DOMClobbering) 访问。 该 Wiki 的 `markdown` 文件位于项目根目录的 [`domc_wiki`](https://github.com/SoheilKhodayari/DOMClobbering/blob/master/domc_wiki) 文件夹中。 ### 🏭 本地构建 本仓库使用 Jekyll [just-the-docs](https://github.com/just-the-docs/just-the-docs) 作为 GitHub Pages 的[远程主题](https://blog.github.com/2017-11-29-use-any-theme-with-github-pages/)),相关配置在 `_config.yaml` 中指定: ``` remote_theme: just-the-docs/just-the-docs color_scheme: "dark" ``` **Docker:** 您可以使用以下命令在 Docker 容器中构建和运行此 Wiki: ``` $ docker-compose build wiki $ docker-compose up wiki ``` **宿主机:** 或者,您可以使用以下命令在您的宿主机中构建它: ``` $ gem install just-the-docs $ bundle exec jekyll serve ``` 有关更多信息,请参阅官方的 [just-the-docs](https://github.com/just-the-docs/just-the-docs) 和 [Jekyll](https://jekyllrb.com/) 文档。 ### 💻 自动化部署 本仓库使用 [Github Actions](https://github.com/features/actions),一旦提交合并到 `master` 分支(即 Pull Request 被接受),就会使用 [Jekyll](https://jekyllrb.com/) 自动构建并发布 DOM Clobbering Wiki 的静态版本。 ## 🙋 问题 如有任何问题、建议、反馈或疑虑,请[在仓库中提交 Issue](https://github.com/SoheilKhodayari/DOMClobbering/issues)。 ## 📝 学术发表 本仓库的内容已作为 IEEE S&P'23 论文的一部分发表。如果您将 DOMC-BT 用于学术研究,我们鼓励您引用以下[论文](https://ieeexplore.ieee.org/document/10179403): ``` @inproceedings {SKhodayariSP23TheThing, author = {Soheil Khodayari and Giancarlo Pellegrino}, title = {It's (DOM) Clobbering Time: Attack Techniques, Prevalence, and Defenses, booktitle = {To Appear at proceedings of the 44rd IEEE Symposium on Security and Privacy}, year = {2023}, } ``` ## 浏览器测试 我们感谢 [BrowserStack 开源计划](https://www.browserstack.com/open-source)对本项目的支持。
标签:DOM Clobbering, GNU通用公共许可证, Gradle, MITM代理, Node.js, Python, Web安全, 前端安全, 无后门, 漏洞测试, 自定义脚本, 蓝队分析, 请求拦截, 逆向工具