Hello there, ('ω')ノ
Webキャッシュポイズニングは、Webキャッシュをだまして。
悪意のあるコンテンツを保存して、それを他のユーザーに提供する行為で。
Webキャッシュをポイズニングする一般的な3つの方法は、以下のとおりで。
・リクエストの密輸
・リクエストの分割
・キーなしの入力を使用したポイズニング
キーなしの入力を使用したキャッシュポイズニングにのみ焦点を当てると。
Webキャッシュは、は、頻繁にアクセスされるコンテンツを保存して。
そのコンテンツにアクセスするための後続の要求を高速化して。
キャッシュの例としては、下記のようなものがあって。
・メモリキャッシュ
・DNSキャッシュ
・Webキャッシュ
Webキャッシュは、HTTP応答を一定期間保存することで機能して。
Webキャッシュがキャッシュへの応答コンテンツを追跡する方法は。
キャッシュキーと呼ばれるものを使用して。
キャッシュキーはキャッシュが応答を一意に識別するのに使用するHTTP要求の一部で。
キャッシュキーは1つ以上の応答ヘッダの値とURLパスの全体または一部で構成されて。
下記で、マーキングされている1,2行目がキャッシュキーで。
キャッシュキー以外のリクエストの一部がレスポンスの内容を変更できる場合は。
問題が発生し始めて。
まずは、下記へアクセスして。
https://00bf72f7.poison.digi.ninja:2443/basic.php
ページを生成しているリクエストをリピーターして。
Sendして、レスポンスを表示させて。
キャッシュキーのHostの内容が、リクエストに反映されているのを確認できて。
下記のキーを追加してSendしてみると、キャッシュキー以外がレスポンスに含まれて。
x-forwarded-host: example.com
追加した内容を変更すると、レスポンスの内容も変更されるのを確認できて。
x-forwarded-host: a."><script>alert(1)</script>
Sendを押し続けて、Ageの値を確認しながらリフレッシュさせて。
Age: 0
はじめのページをリロードすると、スクリプトが反映された。
ちなみにExtenderのアウトプットは、下記のとおりで。
脆弱性としても検知されていて。
Best regards, (^^ゞ