ソース:
脆弱性:Web Cache Poisoning
訳:
導入
最近のバグハンティングセッション中に、Drupal アプリケーションに魅力的なキャッシュポイズニングの脆弱性を発見して。
初期の観察
アプリケーションをテストしているときに、応答に次のような興味深いヘッダーがあることに気付きました。
X-Drupal-Cache: MISS & Cache-Control: max-age=3600、public & Expires: Sun, 19 Nov 1978 05:00:00 GMT
「Expires: Sun, 19 Nov 1978 05:00:00 GMT」ヘッダーは、コンテンツの有効期限がいつ切れるかを示して。
この場合、日付ははるかに過去の時刻に設定されて。
これは、応答をキャッシュする必要がないことを示す一般的な方法で。 Cache-Control
指令。
また、ヘッダーは、アプリケーションが Drupal のデフォルトのキャッシュ メカニズムを使用していて、コンテンツが公開されており、1 時間キャッシュ可能であることを示していて。
Drupal でのキャッシュの仕組み
- キャッシュの生成 : ページがリクエストされてキャッシュに見つからない (MISS) 場合、Drupal はページのコンテンツを生成し、後続のリクエストに備えてキャッシュに保存し。
- キャッシュの提供 : 同じページに対する後続のリクエストで、コンテンツがキャッシュ内でまだ有効 (HIT) であれば、Drupal はキャッシュされたバージョンを提供し。これにより、より高速かつ効率的になって。
X-Drupal-Cache
ヘッダーは、人気のあるコンテンツ管理システムである Drupal によって、応答のキャッシュ ステータスを示すために使用され。
値の詳細については次のとおりです。HIT
そして MISS
意味するもの:
X-Drupal-Cache: HIT
- 意味 :
X-Drupal-Cache
ヘッダーの値は次のとおりですHIT
、これは、応答がキャッシュから提供されたことを意味して。 - 意味 : 要求されたページまたはリソースはすでにキャッシュに保存されているため、Drupal はコンテンツを再生成する必要はなく。
キャッシュからコンテンツを提供すると、基になるコードやデータベースクエリを実行する必要がなくなるため、一般に応答時間が短縮され、サーバーの負荷が軽減されて。 - 例 : ユーザーが以前にキャッシュされたページをリクエストした場合、次のように、そのページのキャッシュされたバージョンを受け取り。
X-Drupal-Cache: HIT
.
X-Drupal-Cache: MISS
- 意味 :
X-Drupal-Cache
ヘッダーの値は次のとおりですMISS
、これは、応答がキャッシュから提供されなかったことを意味し。 - 意味 : 要求されたページまたはリソースがキャッシュ内に見つからなかったため、Drupal はコンテンツを最初から生成する必要があり。
これには通常、PHP コードとデータベース クエリの実行が含まれますが、キャッシュされた応答を提供する場合に比べて時間がかかることがあって。 - 例 : ユーザーがまだキャッシュされていないページ、またはキャッシュの有効期限が切れているページをリクエストした場合、Drupal はコンテンツを再生成して、次のように提供し。
X-Drupal-Cache: MISS
。
このコンテンツは、将来のリクエストに備えてキャッシュに保存される場合があって。
捜査が始まります
キャッシュの動作に興味があったので、さまざまな URL パラメーターとヘッダーを試し始め。
さらに分析すると、アプリケーションは、キーなしの URL パラメーターとキーなしのヘッダーを介して提供された値をキャッシュしていたことが明らかになり。 x-forwarded-port
。
Param Miner は、キャッシュ ポイズニングの可能性を特定するのに非常に役立って。
ご存じない方のために説明すると、Param Miner は、リンクされていない非表示のパラメータを識別する拡張機能で。
これは、Web キャッシュポイズニングの脆弱性を見つけるのに特に役立ち、 Burp Suite v2021.9 以降が必要で。
ペイロードの作成
これを悪用するために、キーなしのパラメーターとキーなしのヘッダーの両方を含むペイロードを作成し。
キャッシュのトリガー
リクエストを送信した後、レスポンスには次のものが含まれていることがわかって。
「X-Drupal-Cache: HIT」と、Web サイトのソーシャル メディア リンクに反映されていたペイロード。
これは、ペイロードがアプリケーションによって正常にキャッシュされたことを示していて。
影響と悪用
さらに検査を行ったところ、ペイロードが Web サイトのリンク内にキャッシュされていることが判明し。
これは、誰かがキャッシュされた URL をクリックするとペイロードが実行され、DNS/HTTP インタラクションが Burp Suite のコラボレーターに送り返されることを意味して。
実際には、これにより攻撃者が悪意のあるコンテンツでキャッシュを汚染し、ユーザーを悪意のあるサイトにリダイレクトしたり、機密情報を盗んだりする可能性があって。
ほなほな。