mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
115 lines
7.2 KiB
Markdown
115 lines
7.2 KiB
Markdown
# 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 %}
|