mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 01:17:36 +00:00
Translated ['network-services-pentesting/pentesting-web/nextjs.md', 'pen
This commit is contained in:
parent
be5d8b6111
commit
e4d9e2b378
3 changed files with 72 additions and 49 deletions
|
@ -398,6 +398,7 @@
|
|||
* [Laravel](network-services-pentesting/pentesting-web/laravel.md)
|
||||
* [Moodle](network-services-pentesting/pentesting-web/moodle.md)
|
||||
* [Nginx](network-services-pentesting/pentesting-web/nginx.md)
|
||||
* [NextJS](network-services-pentesting/pentesting-web/nextjs.md)
|
||||
* [PHP Tricks](network-services-pentesting/pentesting-web/php-tricks-esp/README.md)
|
||||
* [PHP - Useful Functions & disable\_functions/open\_basedir bypass](network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/README.md)
|
||||
* [disable\_functions bypass - php-fpm/FastCGI](network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/disable\_functions-bypass-php-fpm-fastcgi.md)
|
||||
|
|
16
network-services-pentesting/pentesting-web/nextjs.md
Normal file
16
network-services-pentesting/pentesting-web/nextjs.md
Normal file
|
@ -0,0 +1,16 @@
|
|||
# NextJS
|
||||
|
||||
{% 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)または[**テレグラムグループ**](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 %}
|
|
@ -3,28 +3,28 @@
|
|||
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=race-condition)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
|
||||
[**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=race-condition)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=race-condition" %}
|
||||
|
||||
{% 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)
|
||||
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を提出してハッキングトリックを共有してください。
|
||||
* **💬 [**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 %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
この技術を深く理解するためには、[https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)の元のレポートを確認してください。
|
||||
この技術を深く理解するには、[https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)の元のレポートを確認してください。
|
||||
{% endhint %}
|
||||
|
||||
## レースコンディション攻撃の強化
|
||||
|
@ -35,17 +35,17 @@ GCPハッキングを学び、実践する:<img src="/.gitbook/assets/grte.png
|
|||
|
||||
#### HTTP/2シングルパケット攻撃対HTTP/1.1ラストバイト同期
|
||||
|
||||
* **HTTP/2**:単一のTCP接続で2つのリクエストを送信することをサポートし、ネットワークのジッターの影響を軽減します。ただし、サーバー側の変動により、2つのリクエストでは一貫したレースコンディションの悪用には不十分な場合があります。
|
||||
* **HTTP/1.1 'ラストバイト同期'**:20-30のリクエストのほとんどの部分を事前に送信し、小さな断片を保持して一緒に送信することで、サーバーへの同時到着を実現します。
|
||||
* **HTTP/2**:単一のTCP接続を介して2つのリクエストを送信することをサポートし、ネットワークのジッターの影響を軽減します。ただし、サーバー側の変動により、2つのリクエストでは一貫したレースコンディションの悪用には不十分な場合があります。
|
||||
* **HTTP/1.1 'ラストバイト同期'**:20-30のリクエストのほとんどの部分を事前に送信し、小さな断片を保持し、それを一緒に送信することで、サーバーへの同時到着を実現します。
|
||||
|
||||
**ラストバイト同期の準備**には以下が含まれます:
|
||||
|
||||
1. ストリームを終了せずに最終バイトを除いたヘッダーとボディデータを送信します。
|
||||
2. 初回送信後に100ms待機します。
|
||||
3. TCP\_NODELAYを無効にして、Nagleのアルゴリズムを利用して最終フレームをバッチ処理します。
|
||||
4. 接続を温めるためにピングを行います。
|
||||
4. 接続を温めるためにピングを送信します。
|
||||
|
||||
保持されたフレームのその後の送信は、Wiresharkを使用して確認できる単一パケットでの到着をもたらすべきです。この方法は、通常RC攻撃に関与しない静的ファイルには適用されません。
|
||||
保持されたフレームのその後の送信は、Wiresharkを介して確認できる単一パケットでの到着をもたらすべきです。この方法は、通常RC攻撃に関与しない静的ファイルには適用されません。
|
||||
|
||||
### サーバーアーキテクチャへの適応
|
||||
|
||||
|
@ -61,7 +61,7 @@ PHPのセッションハンドラーのようなフレームワークは、セ
|
|||
|
||||
## 攻撃の例
|
||||
|
||||
* **Tubo Intruder - HTTP2シングルパケット攻撃(1エンドポイント)**:リクエストを**Turbo intruder**に送信できます(`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`)。リクエスト内の**`%s`**の値をブルートフォースしたい値に変更できます。例えば、`csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s`のように。そして、ドロップダウンから**`examples/race-single-packer-attack.py`**を選択します:
|
||||
* **Tubo Intruder - HTTP2シングルパケット攻撃(1エンドポイント)**:リクエストを**Turbo intruder**に送信できます(`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`)。リクエスト内の**`%s`**の値をブルートフォースしたいものに変更できます。例えば、`csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s`のように。そして、ドロップダウンから**`examples/race-single-packer-attack.py`**を選択します:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (57).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -109,12 +109,12 @@ engine.openGate(currentAttempt)
|
|||
* **Repeater**でも、Burp Suiteの新しい「**Send group in parallel**」オプションを使用できます。
|
||||
* **limit-overrun**の場合、グループに**同じリクエストを50回**追加するだけで済みます。
|
||||
* **connection warming**のために、**グループ**の**最初**にウェブサーバーの非静的部分への**リクエスト**を**追加**することができます。
|
||||
* **delaying**プロセスのために、**1つのリクエストと別のリクエストの間**に**追加のリクエストを挿入**することができます。
|
||||
* **遅延**を**1つのリクエストと別のリクエストの処理の間**に2つのサブステートステップで行うには、両方のリクエストの間に**追加のリクエストを追加**することができます。
|
||||
* **multi-endpoint** RCの場合、**隠れた状態**に送信される**リクエスト**を最初に送信し、その後に**隠れた状態を悪用する50のリクエスト**を送信することができます。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (58).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* **自動化されたPythonスクリプト**: このスクリプトの目的は、ユーザーのメールを変更し、新しいメールの検証トークンが最後のメールに届くまで継続的に確認することです(これは、コード内でメールを変更できるRCが見られたためで、検証が古いメールに送信されることが可能でした。なぜなら、メールを示す変数が最初のもので既に設定されていたからです)。\
|
||||
* **自動化されたPythonスクリプト**: このスクリプトの目的は、ユーザーのメールを変更し、新しいメールの検証トークンが最後のメールに届くまで継続的に確認することです(これは、コード内でメールを変更できるRCが見られたためで、検証が古いメールに送信されることが可能でした。なぜなら、メールを示す変数が最初のもので既に populated されていたからです)。\
|
||||
「objetivo」という単語が受信したメールに見つかると、変更されたメールの検証トークンを受け取ったことがわかり、攻撃を終了します。
|
||||
```python
|
||||
# https://portswigger.net/web-security/race-conditions/lab-race-conditions-limit-overrun
|
||||
|
@ -219,9 +219,6 @@ temp_data_bytes += bytes(d)
|
|||
|
||||
h2_conn.send_bytes(temp_headers_bytes)
|
||||
|
||||
|
||||
|
||||
|
||||
# wait some time
|
||||
sleep(0.1)
|
||||
|
||||
|
@ -243,13 +240,22 @@ h2_conn.close_connection()
|
|||
|
||||
response = requests.get(url, verify=False)
|
||||
```
|
||||
### Raw BF
|
||||
### シングルパケット攻撃の改善
|
||||
|
||||
以前の研究の前に、RCを引き起こすためにできるだけ早くパケットを送信しようとしたいくつかのペイロードがありました。
|
||||
元の研究では、この攻撃には1,500バイトの制限があると説明されています。しかし、[**この投稿**](https://flatt.tech/research/posts/beyond-the-limit-expanding-single-packet-race-condition-with-first-sequence-sync/)では、IPレイヤーのフラグメンテーションを使用してシングルパケット攻撃の1,500バイトの制限を**TCPの65,535 Bウィンドウ制限に拡張する方法**が説明されています(単一のパケットを複数のIPパケットに分割し、異なる順序で送信することで、すべてのフラグメントがサーバーに到達するまでパケットの再構成を防ぐことができます)。この技術により、研究者は約166msで10,000リクエストを送信することができました。 
|
||||
|
||||
* **Repeater:** 前のセクションの例を確認してください。
|
||||
* **Intruder**: **Intruder**に**リクエスト**を送信し、**オプションメニュー**内で**スレッド数**を**30**に設定し、ペイロードとして**Null payloads**を選択し、**30**を生成します。
|
||||
* **Turbo Intruder**
|
||||
この改善により、同時に到着する必要がある数百または数千のパケットを必要とするRC攻撃がより信頼性の高いものになりますが、いくつかのソフトウェア制限がある可能性もあります。Apache、Nginx、Goなどの人気のあるHTTPサーバーには、`SETTINGS_MAX_CONCURRENT_STREAMS`の設定がそれぞれ100、128、250に厳格に制限されています。しかし、NodeJSやnghttp2のような他のものは無制限です。\
|
||||
これは基本的に、Apacheが単一のTCP接続から100のHTTP接続のみを考慮することを意味し(このRC攻撃を制限します)。
|
||||
|
||||
この技術を使用したいくつかの例は、リポジトリ[https://github.com/Ry0taK/first-sequence-sync/tree/main](https://github.com/Ry0taK/first-sequence-sync/tree/main)で見つけることができます。
|
||||
|
||||
## 生のBF
|
||||
|
||||
前の研究の前に、RCを引き起こすためにパケットをできるだけ早く送信しようとしたいくつかのペイロードがありました。
|
||||
|
||||
* **リピーター:** 前のセクションの例を確認してください。
|
||||
* **侵入者**: **リクエスト**を**侵入者**に送信し、**オプションメニュー**内で**スレッド数**を**30**に設定し、ペイロードとして**ヌルペイロード**を選択し、**30**を生成します。
|
||||
* **ターボ侵入者**
|
||||
```python
|
||||
def queueRequests(target, wordlists):
|
||||
engine = RequestEngine(endpoint=target.endpoint,
|
||||
|
@ -302,22 +308,22 @@ asyncio.run(main())
|
|||
|
||||
これは、**アクションを実行できる回数を制限する場所に現れる** **脆弱性**の最も基本的なタイプのレースコンディションです。例えば、ウェブストアで同じ割引コードを何度も使用することです。非常に簡単な例は[**このレポート**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43)や[**このバグ**](https://hackerone.com/reports/759247)**に見られます。**
|
||||
|
||||
この種の攻撃には多くのバリエーションがあります:
|
||||
この種の攻撃には多くのバリエーションがあります。例えば:
|
||||
|
||||
* ギフトカードを複数回利用する
|
||||
* 製品を複数回評価する
|
||||
* 商品を複数回評価する
|
||||
* アカウント残高を超えて現金を引き出したり転送したりする
|
||||
* 単一のCAPTCHAソリューションを再利用する
|
||||
* 単一のCAPTCHA解決策を再利用する
|
||||
* アンチブルートフォースレート制限を回避する
|
||||
|
||||
### **Hidden substates**
|
||||
|
||||
複雑なレースコンディションを悪用することは、隠れたまたは**意図しないマシンのサブステート**と相互作用する短い機会を利用することを含むことがよくあります。これにアプローチする方法は次のとおりです:
|
||||
複雑なレースコンディションを悪用することは、隠れたまたは**意図しないマシンのサブステート**と相互作用するための短い機会を利用することを含むことがよくあります。これにアプローチする方法は次のとおりです:
|
||||
|
||||
1. **潜在的な隠れたサブステートを特定する**
|
||||
* ユーザープロファイルやパスワードリセットプロセスなど、重要なデータを変更または相互作用するエンドポイントを特定します。以下に焦点を当てます:
|
||||
* **ストレージ**:クライアント側のデータを扱うエンドポイントよりも、サーバー側の永続データを操作するエンドポイントを優先します。
|
||||
* **アクション**:新しいデータを追加するよりも、既存のデータを変更する操作を探します。これらの方が悪用可能な条件を作成する可能性が高いです。
|
||||
* ユーザープロファイルやパスワードリセットプロセスなど、重要なデータを変更または相互作用するエンドポイントを特定することから始めます。以下に焦点を当てます:
|
||||
* **ストレージ**:サーバー側の永続データを操作するエンドポイントを、クライアント側のデータを扱うものよりも優先します。
|
||||
* **アクション**:既存のデータを変更する操作を探します。これは新しいデータを追加するものよりも悪用可能な条件を作成する可能性が高いです。
|
||||
* **キー**:成功した攻撃は通常、同じ識別子(例:ユーザー名やリセットトークン)に基づく操作を含みます。
|
||||
2. **初期プロービングを実施する**
|
||||
* 特定したエンドポイントに対してレースコンディション攻撃をテストし、期待される結果からの逸脱を観察します。予期しない応答やアプリケーションの動作の変化は脆弱性を示す可能性があります。
|
||||
|
@ -326,7 +332,7 @@ asyncio.run(main())
|
|||
|
||||
### 時間に敏感な攻撃
|
||||
|
||||
リクエストのタイミングの精度は脆弱性を明らかにすることができ、特にタイムスタンプのような予測可能な方法がセキュリティトークンに使用される場合に顕著です。例えば、タイムスタンプに基づいてパスワードリセットトークンを生成すると、同時リクエストに対して同一のトークンが生成される可能性があります。
|
||||
リクエストのタイミングの精度は脆弱性を明らかにすることができ、特にタイムスタンプのような予測可能な方法がセキュリティトークンに使用される場合に顕著です。例えば、タイムスタンプに基づいてパスワードリセットトークンを生成すると、同時リクエストに対して同一のトークンが許可される可能性があります。
|
||||
|
||||
**悪用するには:**
|
||||
|
||||
|
@ -338,33 +344,33 @@ asyncio.run(main())
|
|||
|
||||
**これを試すには** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities) **をチェックしてください。**
|
||||
|
||||
## Hidden substates ケーススタディ
|
||||
## 隠れたサブステートのケーススタディ
|
||||
|
||||
### アイテムを支払い追加する
|
||||
### 支払いとアイテムの追加
|
||||
|
||||
この[**PortSwigger Lab**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation)をチェックして、**支払い**を行い、**追加のアイテムを追加する**方法を確認してください。**それに対して支払う必要はありません。**
|
||||
この[**PortSwigger Lab**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation)をチェックして、**支払い**を行い、**追加の**アイテムを**支払わずに追加する**方法を確認してください。
|
||||
|
||||
### 他のメールを確認する
|
||||
### 他のメールの確認
|
||||
|
||||
アイデアは、**メールアドレスを確認し、同時に別のものに変更する**ことで、プラットフォームが変更された新しいものを確認するかどうかを調べることです。
|
||||
|
||||
### 2つのメールアドレスにメールを変更する Cookieベース
|
||||
### 2つのメールアドレスへのメール変更(クッキーに基づく)
|
||||
|
||||
[**この研究**](https://portswigger.net/research/smashing-the-state-machine)によると、Gitlabはこの方法で乗っ取られる脆弱性があり、**1つのメールのメール確認トークンを別のメールに送信する可能性があります。**
|
||||
[**この研究**](https://portswigger.net/research/smashing-the-state-machine)によると、Gitlabはこの方法で乗っ取られる脆弱性があり、**1つのメールの** **メール確認トークンを別のメールに送信する**可能性があります。
|
||||
|
||||
**これを試すには** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint) **をチェックしてください。**
|
||||
|
||||
### 隠れたデータベースの状態 / 確認バイパス
|
||||
|
||||
**2つの異なる書き込み**が**データベース内に情報を追加するために使用される**場合、**最初のデータのみがデータベースに書き込まれた**小さな時間の部分があります。例えば、ユーザーを作成する際に、**ユーザー名**と**パスワード**が**書き込まれ**、**新しく作成されたアカウントを確認するためのトークン**が書き込まれます。これは、短い時間の間、**アカウントを確認するためのトークンがnullである**ことを意味します。
|
||||
**2つの異なる書き込み**が**データベース内に情報を追加するために使用される**場合、**最初のデータのみがデータベースに書き込まれる**小さな時間の部分があります。例えば、ユーザーを作成する際に、**ユーザー名**と**パスワード**が**書き込まれ**、**新しく作成されたアカウントを確認するためのトークン**が書き込まれます。これは、**アカウントを確認するためのトークンがnullである**小さな時間があることを意味します。
|
||||
|
||||
したがって、**アカウントを登録し、空のトークン**(`token=`または`token[]=`または他のバリエーション)で確認するために複数のリクエストを送信することで、メールを制御していないアカウントを**確認する**ことができる可能性があります。
|
||||
|
||||
**これを試すには** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction) **をチェックしてください。**
|
||||
|
||||
### 2FAをバイパスする
|
||||
### 2FAのバイパス
|
||||
|
||||
以下の擬似コードは、セッションが作成されている間に**2FAが強制されていない**非常に短い時間があるため、レースコンディションに脆弱です:
|
||||
以下の擬似コードは、セッションが作成されている間に**2FAが強制されていない**非常に短い時間があるため、レースコンディションに対して脆弱です:
|
||||
```python
|
||||
session['userid'] = user.userid
|
||||
if user.mfa_enabled:
|
||||
|
@ -375,19 +381,19 @@ session['enforce_mfa'] = True
|
|||
### OAuth2 永続的な持続性
|
||||
|
||||
いくつかの [**OAUth プロバイダー**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers) があります。これらのサービスは、アプリケーションを作成し、プロバイダーが登録したユーザーを認証することを可能にします。そのためには、**クライアント**が**あなたのアプリケーション**に**OAUth プロバイダー**内のデータにアクセスすることを**許可する**必要があります。\
|
||||
ここまで、google/linkedin/githubなどの一般的なログインで、"_アプリケーション \<InsertCoolName> があなたの情報にアクセスしたいと考えています。許可しますか?_"というページが表示されます。
|
||||
ここまで、google/linkedin/githubなどの一般的なログインで、"_アプリケーション \<InsertCoolName> があなたの情報にアクセスしたいとしています。許可しますか?_"というページが表示されます。
|
||||
|
||||
#### `authorization_code` におけるレースコンディション
|
||||
|
||||
**問題**は、あなたが**それを受け入れる**と、自動的に悪意のあるアプリケーションに**`authorization_code`**が送信されるときに発生します。その後、この**アプリケーションはOAUthサービスプロバイダーのレースコンディションを悪用して、あなたのアカウントの**`authorization_code`**から複数のAT/RT**(_認証トークン/リフレッシュトークン_)を生成します。基本的に、あなたがアプリケーションにデータへのアクセスを許可した事実を悪用して、**複数のアカウントを作成します**。その後、あなたが**アプリケーションにデータへのアクセスを許可しなくなると、1対のAT/RTが削除されますが、他のものはまだ有効です**。
|
||||
**問題**は、あなたが**それを受け入れる**と、自動的に悪意のあるアプリケーションに**`authorization_code`**が送信されるときに発生します。その後、この**アプリケーションは OAUth サービスプロバイダーのレースコンディションを悪用して、あなたのアカウントの**`authorization_code`**から複数の AT/RT** (_認証トークン/リフレッシュトークン_) を生成します。基本的に、あなたがアプリケーションにデータへのアクセスを許可した事実を悪用して、**複数のアカウントを作成します**。その後、あなたが**アプリケーションにデータへのアクセスを許可しなくなると、1対の AT/RT が削除されますが、他のものはまだ有効です**。
|
||||
|
||||
#### `Refresh Token` におけるレースコンディション
|
||||
|
||||
一度**有効なRT**を**取得すると、複数のAT/RTを生成するためにそれを**悪用しようとすることができます**。さらに、ユーザーが悪意のあるアプリケーションにデータへのアクセスの権限をキャンセルしても、**複数のRTはまだ有効です**。
|
||||
一度**有効な RT**を**取得すると、複数の AT/RT を生成するためにそれを悪用しようとすることができます**。さらに、ユーザーが悪意のあるアプリケーションにデータへのアクセスの権限をキャンセルしても、**複数の RT はまだ有効です**。
|
||||
|
||||
## **WebSocketsにおけるRC**
|
||||
## **WebSockets における RC**
|
||||
|
||||
[**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) では、**レースコンディションをWebソケットでも悪用するために、並行してWebSocketメッセージを送信するJavaのPoCを見つけることができます**。
|
||||
[**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) では、**レースコンディションを Web ソケットでも悪用するために、並行して WebSocket メッセージを送信する Java の PoC**を見つけることができます。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
@ -398,16 +404,16 @@ session['enforce_mfa'] = True
|
|||
* [https://portswigger.net/web-security/race-conditions](https://portswigger.net/web-security/race-conditions)
|
||||
|
||||
{% 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)
|
||||
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>
|
||||
<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を提出してください。**
|
||||
* **💬 [**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 %}
|
||||
|
@ -415,7 +421,7 @@ GCPハッキングを学び、実践する:<img src="/.gitbook/assets/grte.png
|
|||
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=race-condition)を使用して、世界で最も**高度な**コミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
|
||||
[**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=race-condition) を使用して、世界で最も**高度な**コミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=race-condition" %}
|
||||
|
|
Loading…
Reference in a new issue