Shikata Ga Nai

Private? There is no such things.

Web Cache Poisoning LabのBasicをやってみた

Hello there, ('ω')ノ


Webキャッシュポイズニングは、Webキャッシュをだまして。

悪意のあるコンテンツを保存して、それを他のユーザーに提供する行為で。

Webキャッシュをポイズニングする一般的な3つの方法は、以下のとおりで。

 ・リクエストの密輸

 ・リクエストの分割

 ・キーなしの入力を使用したポイズニング

 

キーなしの入力を使用したキャッシュポイズニングにのみ焦点を当てると。

 

Webキャッシュは、は、頻繁にアクセスされるコンテンツを保存して。

そのコンテンツにアクセスするための後続の要求を高速化して。

キャッシュの例としては、下記のようなものがあって。

 ・メモリキャッシュ

 ・DNSキャッシュ

 ・Webキャッシュ

 

Webキャッシュは、HTTP応答を一定期間保存することで機能して。

Webキャッシュがキャッシュへの応答コンテンツを追跡する方法は。

キャッシュキーと呼ばれるものを使用して。

キャッシュキーはキャッシュが応答を一意に識別するのに使用するHTTP要求の一部で。

キャッシュキーは1つ以上の応答ヘッダの値とURLパスの全体または一部で構成されて。

下記で、マーキングされている1,2行目がキャッシュキーで。

キャッシュキー以外のリクエストの一部がレスポンスの内容を変更できる場合は。

問題が発生し始めて。

 

f:id:ThisIsOne:20210120140914p:plain

 

まずは、下記へアクセスして。

 https://poison.digi.ninja/

 https://00bf72f7.poison.digi.ninja:2443/basic.php

 

f:id:ThisIsOne:20210120131537p:plain

 

ページを生成しているリクエストをリピーターして。

 

f:id:ThisIsOne:20210120142347p:plain

 

Sendして、レスポンスを表示させて。


f:id:ThisIsOne:20210120125700p:plain

 

キャッシュキーのHostの内容が、リクエストに反映されているのを確認できて。

 

f:id:ThisIsOne:20210120125749p:plain

 

下記のキーを追加してSendしてみると、キャッシュキー以外がレスポンスに含まれて。

 x-forwarded-host: example.com

 

f:id:ThisIsOne:20210120131120p:plain

 

追加した内容を変更すると、レスポンスの内容も変更されるのを確認できて。

 x-forwarded-host: a."><script>alert(1)</script>

 

f:id:ThisIsOne:20210120131405p:plain

 

Sendを押し続けて、Ageの値を確認しながらリフレッシュさせて。

 Age: 0

 

f:id:ThisIsOne:20210120131752p:plain

 

はじめのページをリロードすると、スクリプトが反映された。


f:id:ThisIsOne:20210120131717p:plain

 

ちなみにExtenderのアウトプットは、下記のとおりで。

 

f:id:ThisIsOne:20210120133329p:plain

 

脆弱性としても検知されていて。

 

f:id:ThisIsOne:20210120155637p:plain


Best regards, (^^ゞ