# DOM Invader
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) 支持HackTricks的其他方式: * 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) * 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品 * **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
## DOM Invader DOM Invader是安装在Burp内置浏览器中的浏览器工具。它通过各种来源和汇聚点(包括Web消息和原型污染)帮助**检测DOM XSS漏洞**。该工具作为扩展预安装。 DOM Invader集成了浏览器的DevTools面板中的一个选项卡,实现以下功能: 1. 用于DOM XSS测试的网页上**可控汇聚点的识别**,提供上下文和清理细节。 2. 通过`postMessage()`方法**记录、编辑和重新发送**发送的Web消息,用于DOM XSS测试。DOM Invader还可以使用特制的Web消息自动检测漏洞。 3. 检测**客户端原型污染**源并扫描发送到风险汇聚点的可控小工具。 4. 识别**DOM覆盖漏洞**。 ### 启用 在Burp的内置浏览器中转到**Burp扩展**并启用它:
现在刷新页面,在**Dev Tools**中您将找到**DOM Invader选项卡**:
### 注入一个Canary 在上图中,您可以看到一个**随机字符组,即Canary**。现在,您应该开始在网页的不同部分(参数、表单、URL等)**注入**它,并每次单击搜索。DOM Invader将检查**Canary是否出现在任何有趣的汇聚点**中,这些汇聚点可能会被利用。 此外,选项**注入URL参数**和**注入表单**将自动打开一个**新标签页**,在其中**注入Canary**到它找到的每个**URL**参数和**表单**中。 ### 注入一个空Canary 如果您只想查找页面可能具有的潜在汇聚点,即使它们不可利用,您可以**搜索一个空Canary**。 ### 发送消息 DOM Invader允许使用Web消息进行DOM XSS测试,具有以下功能: 1. **记录**通过`postMessage()`发送的Web消息,类似于Burp Proxy的HTTP请求/响应历史记录。 2. **修改**和**重新发出**Web消息以手动测试DOM XSS,类似于Burp Repeater的功能。 3. 用于探测DOM XSS的**自动更改**和发送Web消息。 #### 消息详情 单击消息后,可以查看有关每条消息的详细信息,包括客户端JavaScript是否访问消息的`origin`、`data`或`source`属性。 * **`origin`**:如果消息的**来源信息未经检查**,您可能能够从**任意外部域**向事件处理程序发送跨源消息。但如果已检查,则仍可能存在不安全性。 * **`data`**:这是发送有效载荷的地方。如果未使用此数据,则汇聚点无效。 * **`source`**:评估源属性是否已验证,通常引用一个iframe,而不是来源。即使已检查,也不能保证验证不会被绕过。 #### 回复消息 1. 从**消息**视图中,单击任何消息以打开消息详细信息对话框。 2. 根据需要编辑**数据**字段。 3. 单击**发送**。 ### 原型污染 DOM Invader还可以搜索**原型污染漏洞**。首先,您需要启用它:
然后,它将**搜索源**,使您能够向**`Object.prototype`**添加任意属性。 如果找到任何内容,将出现一个**测试**按钮以**测试找到的源**。单击它,将出现一个新标签页,在控制台中创建一个对象并检查`testproperty`是否存在: ```javascript let b = {} b.testproperty ``` 一旦找到源,您可以**扫描小工具**: 1. 单击**DOM**视图中任何已识别的原型污染源旁边的**扫描小工具**按钮时,DOM Invader会打开一个新标签页,扫描适合的小工具随即开始。 2. 与此同时,在同一标签页中,**DOM Invader**标签应该在DevTools面板中打开。扫描完成后,通过已识别的小工具可访问的任何漏洞都会显示在**DOM**视图中。例如,将传递给`innerHTML`漏洞的名为`html`的小工具属性在下面的示例中显示。 ## DOM淹没 在上一张图片中,可以看到可以打开DOM淹没扫描。完成后,**DOM Invader将开始搜索DOM淹没漏洞**。 ## 参考资料 * [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](https://portswigger.net/burp/documentation/desktop/tools/dom-invader) * [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling) * [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss) * [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages) * [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution) * [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering)