Web Cache
Hello there, ('ω')ノ ✅ このラボで学べること このラボでは、Webキャッシュ・ディセプション(Web Cache Deception)攻撃の一種である「パス区切り文字の解釈の違い」を悪用した手法を学びます。具体的には、キャッシュサーバーとオリジンサーバーがURLのパ…
Hello there, ('ω')ノ ✅ 攻撃の基本構造 次のようなURLを使って、キャッシュとオリジンサーバーの解釈の違いを狙います: /settings/users/list;aaa.js 解釈のズレ システム 解釈 キャッシュ /settings/users/list;aaa.js → .jsで終わる静的ファイルと判断…
Hello there, ('ω')ノ ✅ 目的 ここでは、前ステップで特定したオリジンサーバーが使う区切り文字(delimiter)を利用しつつ、キャッシュがそれを無視するケースを狙って機密情報をキャッシュさせる方法を詳しく解説します。 攻撃の条件 次の2つが同時に成立…
Hello there, ('ω')ノ ✅ 攻撃の目的 この攻撃では、キャッシュとオリジンサーバーの「区切り文字の解釈の違い」を利用して: 「キャッシュには静的ファイルに見えるURLを保存させ、 オリジンサーバーには動的レスポンスを返させる」 というギャップを作り出…
Hello there, ('ω')ノ ✅ %00(ヌル文字)とは? %00 は URL エンコードされた「ヌル文字(NULL byte)」です。 通常の文字列処理において %00 は文字列の終了を意味する特別な文字です。 一部のサーバーやフレームワークでは %00 によってパスを「途中で打ち…
Hello there, ('ω')ノ ✅ フレームワークごとの区切り文字の違いに注目 URL中の区切り文字(デリミタ)の解釈は、フレームワークごとに異なる場合があります。 これにより、キャッシュとアプリケーションの間でURLの意味が分裂することがWeb Cache Deception…
Hello there, ('ω')ノ ✅ デリミタ(区切り文字)とは? デリミタとは、URL中で構造を区切るために使われる記号や文字列のことです。 一般的な例: ?:パスとクエリパラメータを分ける #:フラグメント識別子 ;:あまり一般的ではないが、Java系で使われる場…
Hello there, ('ω')ノ このラボの目的 このラボでは、Webキャッシュデセプション(Web Cache Deception, WCD)攻撃を利用して、他ユーザー(carlos)のAPIキーを取得する方法を学びます。WCD攻撃は、キャッシュサーバーとオリジンサーバーのURLパスマッピン…
Hello there, ('ω')ノ ✅ 攻撃の概要 パスマッピングのズレによるWeb Cache Deceptionは: サーバーは動的レスポンスを返すが、キャッシュは静的ファイルだと誤解して保存してしまう という挙動を利用して、機密情報を不正にキャッシュ化させる手法です。 テ…
Hello there, ('ω')ノ ✅ 問題の構造 Web Cache Deceptionの脆弱性は、キャッシュとオリジンサーバーでURLの解釈が異なることによって生まれます。 具体例 http://example.com/user/123/profile/wcd.css オリジンサーバー(RESTスタイルの解釈) /user/123/…
Hello there, ('ω')ノ ✅ パスマッピングとは? URLパスのマッピングとは: サーバーが受け取ったURLを、実際に処理すべきリソース(ファイル、スクリプト、APIロジックなど)に変換する仕組み です。 主なマッピングスタイル ① 伝統的なファイルシステム型…
Hello there, ('ω')ノ ✅ この攻撃の概要 多くのCDNやキャッシュサーバーは、以下のような静的ファイル拡張子(例:.css, .js, .png)を含むリクエストをキャッシュ対象と判断します: /account.css, /user.js, /profile.png しかし、アプリケーション側(オ…
Hello there, ('ω')ノ ✅ なぜキャッシュレスポンスの検出が重要か? Web Cache Deception や Web Cache Poisoning の脆弱性を調査・悪用する上で: 「このレスポンスはキャッシュされたものか?それともオリジンサーバーの応答か?」 を正確に判断できること…
Hello there, ('ω')ノ ✅ なぜCache Busterが必要なのか? Web Cache DeceptionやCache Poisoningをテストするとき: キャッシュに保存された既存のレスポンスが影響して、テスト結果が正確でなくなるリスクがあります。 ❌ 問題の例 あなたがURL /account.css…
Hello there, ('ω')ノ Web Cache Deceptionとは? Web Cache Deception(WCD)攻撃は: 「本来キャッシュされるべきでない機密ページを、静的ページに見せかけてCDNやキャッシュサーバーに保存させ、他ユーザーに見せてしまう攻撃」 です。 ✅ 攻撃の基本ス…
Hello there, ('ω')ノ ✅ キャッシュルールとは? キャッシュルールは、Webキャッシュが「どのレスポンスをキャッシュするか、そしてどれくらいの期間保存するか」を決める基準です。 キャッシュルールの目的 対象 理由 静的リソース(画像、CSS、JSなど) …
Hello there, ('ω')ノ ✅ Cache Key(キャッシュキー)とは? Webキャッシュがリクエストを受け取った際に: 「このリクエストは、すでにキャッシュ済みのレスポンスを使えるか?」 を判断するために生成する識別用の値が「キャッシュキー(cache key)」です…
Hello there, ('ω')ノ ✅ Webキャッシュとは? Webキャッシュとは、ユーザーのリクエストとサーバーの間に介在し、静的リソースのやり取りを効率化する仕組みです。 キャッシュの動作フロー ユーザーが静的リソースをリクエスト(例:画像やCSS、JavaScript…