hacktricks/pentesting-web/uuid-insecurities.md

92 lines
7.4 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.

# UUIDの脆弱性
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (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 Training GCP Red Team Expert (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 %}
## 基本情報
ユニバーサルユニーク識別子UUIDは、**コンピュータシステム内の情報を一意に識別するために使用される128ビットの番号**です。UUIDは、中央の調整なしに一意の識別子が必要なアプリケーションで不可欠です。データベースキーとして一般的に使用され、文書やセッションなどのさまざまな要素を参照できます。
UUIDは一意であり、**推測が難しい**ように設計されています。特定の形式で構造化されており、32の16進数の数字で表される5つのグループに分かれています。UUIDには異なるバージョンがあり、それぞれ異なる目的に使用されます
* **UUID v1**は時間ベースで、タイムスタンプ、クロックシーケンス、ードIDMACアドレスを組み込んでいますが、システム情報を露出する可能性があります。
* **UUID v2**はv1に似ていますが、ローカルドメイン用の修正が含まれていますあまり使用されていません
* **UUID v3およびv5**は、名前空間と名前からハッシュ値を使用してUUIDを生成し、v3はMD5を使用し、v5はSHA-1を使用します。
* **UUID v4**はほぼ完全にランダムに生成され、高い匿名性を提供しますが、重複のリスクがあります。
{% hint style="success" %}
UUIDのバージョンとサブバージョンは通常、UUID内の同じ位置に表示されます。例えば\
12345678 - abcd - 1a56 - a539 - 103755193864\
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
* **Mの位置**はUUIDの**バージョン**を示します。上記の例では、UUID v**1**です。
* **Nの位置**はUUIDのバリアントを示します。
{% endhint %}
## サンドイッチ攻撃
「サンドイッチ攻撃」は、**ウェブアプリケーションにおけるUUID v1生成の予測可能性を悪用する特定のタイプの攻撃**です。特にパスワードリセットのような機能で使用されます。UUID v1は時間、クロックシーケンス、ードのMACアドレスに基づいて生成されるため、攻撃者がこれらのUUIDのいくつかを取得できれば、ある程度予測可能になります。
### 例
UUID v1を使用してパスワードリセットリンクを生成するウェブアプリケーションを想像してください。攻撃者がこれを悪用して不正アクセスを得る方法は次のとおりです
1. **初期設定**
* 攻撃者は2つのメールアカウントを制御しています\`attacker1@acme.com\`と\`attacker2@acme.com\`。
* 対象のメールアカウントは\`victim@acme.com\`です。
2. **実行**
* 攻撃者は最初のアカウント(\`attacker1@acme.com\`のパスワードリセットをトリガーし、UUIDを含むパスワードリセットリンクを受け取ります。例えば、\`99874128-7592-11e9-8201-bb2f15014a14\`です。
* その直後、攻撃者は被害者のアカウント(\`victim@acme.com\`のパスワードリセットをトリガーし、次にすぐに2番目の攻撃者制御アカウント\`attacker2@acme.com\`)のためにトリガーします。
* 攻撃者は2番目のアカウントのためのリセットリンクを受け取り、UUIDは\`998796b4-7592-11e9-8201-bb2f15014a14\`です。
3. **分析**
* 攻撃者は、時間的に近く生成された2つのUUID\`99874128\`と\`998796b4\`を持っています。時間ベースのUUIDの連続的な性質を考えると、被害者のアカウントのUUIDはこれら2つの値の間にある可能性が高いです。
4. **ブルートフォース攻撃**
* 攻撃者は、これら2つの値の間のUUIDを生成するツールを使用し、生成された各UUIDをテストしてパスワードリセットリンクにアクセスしようとします\`https://www.acme.com/reset/\<generated-UUID>\`)。
* ウェブアプリケーションがそのような試行を適切にレート制限またはブロックしない場合、攻撃者は範囲内のすべての可能なUUIDを迅速にテストできます。
5. **アクセス獲得**
* 被害者のパスワードリセットリンクの正しいUUIDが発見されると、攻撃者は被害者のパスワードをリセットし、不正にアカウントにアクセスできます。
### ツール
* サンドイッチ攻撃を自動的に実行できるツール: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich)
* Burp SuiteでこれらのタイプのUUIDを検出するための拡張機能[**UUID Detector**](https://portswigger.net/bappstore/65f32f209a72480ea5f1a0dac4f38248)。
## 参考文献
* [https://versprite.com/blog/universally-unique-identifiers/](https://versprite.com/blog/universally-unique-identifiers/)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (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 Training GCP Red Team Expert (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 %}