Shikata Ga Nai

Private? There is no such things.

Internal cache poisoningをやってみた

Hello there, ('ω')ノ

 

内部キャッシュポイズニングを。

このラボは、Webキャッシュポイズニングに脆弱で。

複数のキャッシュレイヤを使用していて。

 

まずは、ページにアクセスして。

 

f:id:ThisIsOne:20210420121055p:plain

 

リクエストをリピータへ。

 

f:id:ThisIsOne:20210420121137p:plain

 

パラメータにキャッシュバスターを追加してSendすると。

レスポンスに反映されて。

つまり、外部キャッシュがこれをキャッシュキーに含めているということで。

 

f:id:ThisIsOne:20210420121346p:plain

 

X-Forwarded-Hostヘッダを追加してSendしてみると。

リクエスト内容からX-Forwarded-Hostがサポートされていることがわかって。

 

f:id:ThisIsOne:20210420121641p:plain

 

エクスプロイトサーバのURLをコピーして。

 

f:id:ThisIsOne:20210420122050p:plain

 

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>

 

f:id:ThisIsOne:20210420122240p:plain

 

エクスプロイトサーバで、下記のFileとBodyを入れ替えてStoreすると。

 

 /js/geolocate.js

 

 alert(document.cookie)

 

f:id:ThisIsOne:20210420122630p:plain

 

ページにアクセスするとスクリプトが起動して。

 

f:id:ThisIsOne:20210420122850p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210420122909p:plain

 

Best regards, (^^ゞ