Hello there, ('ω')ノ
内部キャッシュポイズニングを。
このラボは、Webキャッシュポイズニングに脆弱で。
複数のキャッシュレイヤを使用していて。
まずは、ページにアクセスして。
リクエストをリピータへ。
パラメータにキャッシュバスターを追加してSendすると。
レスポンスに反映されて。
つまり、外部キャッシュがこれをキャッシュキーに含めているということで。
X-Forwarded-Hostヘッダを追加してSendしてみると。
リクエスト内容からX-Forwarded-Hostがサポートされていることがわかって。
エクスプロイトサーバのURLをコピーして。
X-Forwarded-HostヘッダをエクスプロイトサーバのURLに変更してSendし続けると。
geolocate.jsにも反映されて。
さきほどとは違って、最終的にはX-Forwarded-Hostの内容が三箇所に反映されて。
つまり、geolocate.jsのフラグメントが内部キャッシュによって。
個別にキャッシュされているということで。
なので、内部にキャッシュされたフラグメントをポイズニングできるわけで。
<link rel="canonical" href='//acb51f7c1e7c8f87804d1bea01150065.web-security-academy.net/?cb=123'/>
<script type="text/javascript" src="//acb51f7c1e7c8f87804d1bea01150065.web-security-academy.net/resources/js/analytics.js">
<script src=//acb51f7c1e7c8f87804d1bea01150065.web-security-academy.net/js/geolocate.js?callback=loadCountry>
エクスプロイトサーバで、下記のFileとBodyを入れ替えてStoreすると。
/js/geolocate.js
alert(document.cookie)
ページにアクセスするとスクリプトが起動して。
クリアできた。
Best regards, (^^ゞ