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

114 lines
9.7 KiB
Markdown
Raw Normal View History

# DOM Invader
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **Discordグループ**に**参加**する💬https://discord.gg/hRep4RUj7fまたは[**telegramグループ**](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を提出して、あなたのハッキングテクニックを共有してください。
</details>
## DOM Invader
DOM Invaderは、Burpの組み込みブラウザにインストールされたブラウザツールです。さまざまなソースとシンクWebメッセージやプロトタイプ汚染を含むを使用して、**DOM XSS脆弱性を検出**するのに役立ちます。このツールは拡張機能として事前にインストールされています。
DOM Invaderは、ブラウザのDevToolsパネル内にタブを統合し、次の機能を提供します
1. DOM XSSテスト用のウェブページ上の**制御可能なシンクの識別**、コンテキストおよびサニタイズの詳細を提供します。
2. `postMessage()`メソッドを介して送信された**ウェブメッセージのログ記録、編集、再送信**を行い、DOM XSSテストを行います。 DOM Invaderは、特別に作成されたウェブメッセージを使用して脆弱性を自動的に検出することもできます。
3. **クライアントサイドのプロトタイプ汚染**ソースの検出およびリスクのあるシンクに送信された制御可能なガジェットのスキャンを行います。
4. **DOM clobbering脆弱性**の識別。
### 有効にする
Burpの組み込みブラウザで**Burp拡張機能**に移動して、それを有効にします:
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
次にページを更新し、**Dev Tools**で**DOM Invaderタブ**が見つかります:
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### キャナリアをインジェクト
前の画像で**ランダムな文字グループ(キャナリア)**が表示されます。これを異なる部分パラメータ、フォーム、URLなどに**インジェクト**し、毎回検索をクリックします。DOM Invaderは、悪用できる**興味深いシンク**にキャナリアが到達したかどうかをチェックします。
さらに、**URLパラメータをインジェクト**および**フォームをインジェクト**のオプションは、見つけた**すべてのURL**パラメータと**フォーム**に**キャナリア**を自動的にインジェクトする**新しいタブ**を自動的に開きます。
### 空のキャナリアをインジェクト
潜在的なシンクを見つけたい場合は、それが悪用できなくても、**空のキャナリアを検索**できます。
### ポストメッセージ
DOM Invaderを使用して、Webメッセージを使用してDOM XSSをテストできます。次の機能があります
1. `postMessage()`を介して送信された**ウェブメッセージのログ記録**は、Burp ProxyのHTTPリクエスト/レスポンス履歴のログ記録に似ています。
2. 手動でDOM XSSをテストするために、ウェブメッセージを**編集**および**再発行**することができます。
3. DOM XSSを探るために、ウェブメッセージを**自動的に変更**および送信することができます。
2023-07-07 23:42:27 +00:00
#### メッセージの詳細
各メッセージについての詳細情報を表示するには、それをクリックしてください。これには、クライアントサイドJavaScriptがメッセージの`origin`、`data`、または`source`プロパティにアクセスするかどうかが含まれます。
- **`origin`**:メッセージの**オリジン情報がチェックされていない**場合、任意の外部ドメインからイベントハンドラに対してクロスオリジンメッセージを送信できるかもしれません。ただし、これがチェックされていても、安全であるとは限りません。
- **`data`**:これはペイロードが送信される場所です。このデータが使用されていない場合、シンクは無意味です。
- **`source`**通常、iframeを参照するsourceプロパティが、オリジンの代わりに検証されているかどうかを評価します。これがチェックされていても、検証がバイパスされないことを保証するものではありません。
#### メッセージの返信
1. **メッセージ**ビューから、メッセージをクリックしてメッセージの詳細ダイアログを開きます。
2. 必要に応じて**データ**フィールドを編集します。
3. **送信**をクリックします。
2023-07-07 23:42:27 +00:00
### プロトタイプ汚染
DOM Invaderは**プロトタイプ汚染脆弱性**を検索することもできます。まず、それを有効にする必要があります:
<figure><img src="../../.gitbook/assets/image (5) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
その後、**`Object.prototype`**に任意のプロパティを追加できる**ソースを検索**します。
何か見つかった場合、**テスト**ボタンが表示され、**見つかったソースをテスト**することができます。それをクリックすると、新しいタブが表示され、コンソールでオブジェクトを作成し、`testproperty`が存在するかどうかを確認できます:
```javascript
let b = {}
b.testproperty
```
一度ソースを見つけたら、**ガジェットをスキャン**できます:
1. **DOM Invader** は、**DOM** ビュー内の特定のプロトタイプ汚染ソースの隣にある **Scan for gadgets** ボタンをクリックすると、新しいタブが開かれます。適切なガジェットをスキャンする作業が始まります。
2. 同時に、同じタブで **DOM Invader** タブを DevTools パネルで開く必要があります。スキャンが完了すると、特定されたガジェットを介してアクセス可能なシンクが **DOM** ビューに表示されます。例えば、`innerHTML` シンクに渡される `html` という名前のガジェットプロパティが以下の例に示されています。
## DOM clobbering
前の画像では、DOM clobbering スキャンをオンにできることがわかります。完了すると、**DOM Invader は DOM clobbering 脆弱性を検索し始めます**。
2023-07-07 23:42:27 +00:00
## 参考文献
* [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)
<details>
<summary><strong>AWS ハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**、または **HackTricks を PDF でダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングテクニックを共有してください。
</details>