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

110 lines
10 KiB
Markdown
Raw Normal View History

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