hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md

115 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DOM Invader
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
</details>
{% endhint %}
## DOM Invader
DOM Invader 是一个安装在 Burp 内置浏览器中的浏览器工具。它通过各种来源和接收点(包括网络消息和原型污染)来**检测 DOM XSS 漏洞**。该工具作为扩展预安装。
DOM Invader 在浏览器的 DevTools 面板中集成了一个选项卡,支持以下功能:
1. **识别网页上的可控接收点**,用于 DOM XSS 测试,提供上下文和清理细节。
2. **记录、编辑和重新发送通过 `postMessage()` 方法发送的网络消息**,用于 DOM XSS 测试。DOM Invader 还可以使用特别构造的网络消息自动检测漏洞。
3. 检测 **客户端原型污染** 来源,并扫描发送到风险接收点的可控小工具。
4. 识别 **DOM 覆盖漏洞**
### 启用它
在 Burp 的内置浏览器中,转到 **Burp 扩展** 并启用它:
<figure><img src="../../.gitbook/assets/image (1129).png" alt=""><figcaption></figcaption></figure>
现在刷新页面,在 **Dev Tools** 中你会找到 **DOM Invader 选项卡:**
<figure><img src="../../.gitbook/assets/image (695).png" alt=""><figcaption></figcaption></figure>
### 注入一个 Canary
在前面的图像中,你可以看到一个 **随机字符组,这就是 Canary**。你现在应该开始在网页的不同部分参数、表单、URL...)中 **注入**并每次点击搜索。DOM Invader 将检查 **canary 是否结束于任何有趣的接收点**,可能被利用。
此外,选项 **Inject URL params** 和 Inject forms 将自动打开一个 **新选项卡****注入** 每个找到的 **URL** 参数和 **表单** 中的 **canary**
### 注入一个空的 Canary
如果你只想找到页面可能存在的潜在接收点,即使它们不可利用,你可以 **搜索一个空的 canary**
### 发送消息
DOM Invader 允许使用网络消息测试 DOM XSS具有以下功能
1. **记录通过 `postMessage()` 发送的网络消息**,类似于 Burp Proxy 的 HTTP 请求/响应历史记录日志。
2. **修改****重新发送** 网络消息以手动测试 DOM XSS类似于 Burp Repeater 的功能。
3. **自动更改** 和发送网络消息以探测 DOM XSS。
#### 消息详情
通过点击每条消息,可以查看详细信息,包括客户端 JavaScript 是否访问了消息的 `origin`、`data` 或 `source` 属性。
* **`origin`** : 如果 **消息的来源信息未检查**,你可能能够从 **任意外部域** 向事件处理程序发送跨域消息。但如果进行了检查,仍然可能不安全。
* **`data`**: 这是发送有效负载的地方。如果此数据未使用,则接收点无用。
* **`source`**: 评估源属性,通常引用一个 iframe是否经过验证而不是来源。即使进行了检查也不能保证验证无法被绕过。
#### 回复消息
1.**消息** 视图中,点击任何消息以打开消息详情对话框。
2. 根据需要编辑 **数据** 字段。
3. 点击 **发送**
### 原型污染
DOM Invader 还可以搜索 **原型污染漏洞**。首先,你需要启用它:
<figure><img src="../../.gitbook/assets/image (1026).png" alt=""><figcaption></figcaption></figure>
然后,它将 **搜索来源**,使你能够向 **`Object.prototype`** 添加任意属性。
如果找到任何内容,将出现一个 **测试** 按钮以 **测试找到的来源**。点击它,将出现一个新选项卡,在控制台中创建一个对象并检查 `testproperty` 是否存在:
```javascript
let b = {}
b.testproperty
```
一旦你找到一个源,你可以**扫描小工具**
1. 当点击**扫描小工具**按钮时DOM Invader会在**DOM**视图中任何已识别的原型污染源旁边打开一个新标签。然后开始扫描合适的小工具。
2. 与此同时,在同一标签中,**DOM Invader**标签应在DevTools面板中打开。扫描完成后通过已识别的小工具访问的任何接收点将在**DOM**视图中显示。例如,下面的示例中显示了一个名为`html`的小工具属性被传递到`innerHTML`接收点。
## 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)
{% hint style="success" %}
学习与实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持HackTricks</summary>
* 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github库提交PR分享黑客技巧。
</details>
{% endhint %}