Shikata Ga Nai

Private? There is no such things.

Web Cache Deception攻撃の構築手順:基本戦略とキーポイント解説

Hello there, ('ω')ノ

🎯 Web Cache Deceptionとは?

Web Cache Deception(WCD)攻撃は:

「本来キャッシュされるべきでない機密ページを、静的ページに見せかけてCDNやキャッシュサーバーに保存させ、他ユーザーに見せてしまう攻撃」

です。


✅ 攻撃の基本ステップ

① 動的で機密なレスポンスを返すエンドポイントを特定

  • ユーザーごとに内容が異なるURL(例:/account, /dashboard, /ordersなど)
  • Burp Suiteでレスポンスボディを調査し、「メールアドレス」「名前」「注文履歴」などの個人情報が含まれるかを確認
  • GET、HEAD、OPTIONSメソッドが使用できるエンドポイントが対象(POST系はキャッシュされない

② キャッシュとオリジンサーバーのURL解釈の差異を発見

キャッシュサーバーとアプリ本体がURLを異なる方式でパースしているケースを狙います:

差異ポイント
拡張子処理 /account vs /account.css(静的に見える)
区切り文字 /user//settings vs /user/settings
パス正規化 /account/../login/login に変換される

③ キャッシュを騙すURLを構築して、動的レスポンスを保存させる

  • 例:本来機密ページである/accountに対し、以下のような偽装URLを生成
/account.css
/account;static
/account%20
  • これにより、CDNなどのキャッシュが「静的なCSSファイルだな」と誤認して保存してしまう

④ 被害者がその偽装URLにアクセスするよう誘導

  • 誘導方法は:

    • メールにリンクを貼る
    • SNSに投稿
    • XSSやOpen Redirectとの組み合わせなど
  • 被害者がアクセスするとその人の個人情報を含むレスポンスがキャッシュに保存


⑤ 攻撃者が同じ偽装URLをアクセスして、被害者のデータを盗み見る

  • Burp Repeaterなどで直接リクエストを送信
  • ブラウザで開くとセッションがリダイレクトされたり、内容が変化してしまう可能性があるため注意

✅ 攻撃成功のカギ:キャッシュとアプリのURL解釈の「ズレ」

ターゲットの特徴 期待される挙動
キャッシュは /account.css を静的と判断して保存 アプリは .css 無視して /account を処理
結果:被害者の /account ページが .css 付きURLでキャッシュされる → 攻撃者が .css 付きURLでアクセスすると他人の情報が表示される

✅ まとめ

Web Cache Deceptionは:

  • キャッシュのファイル名やパスルールの単純さ
  • アプリの柔軟なURL処理

この二つのズレを突いて、非公開情報を全体に公開状態にしてしまう危険な攻撃です。

Best regards, (^^ゞ