Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Webキャッシュポイズニング
Search
shunaroo
April 27, 2022
Technology
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Webキャッシュポイズニング
Webのキャッシュを悪用することで、攻撃を行うWebキャッシュポイズニングとその対策を紹介します。
shunaroo
April 27, 2022
More Decks by shunaroo
See All by shunaroo
Browser In The Browserの紹介
shunaroo
0
130
Other Decks in Technology
See All in Technology
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
230
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
350
When Does a Local Qwen Start to Break
morshoto
0
190
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
590
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.9k
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
160
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
240
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
140
Omarchy Quattro の日本語設定周り
simosako
2
140
あるけみー式LTスライド作成術
alchemy1115
1
160
GoにおけるFFIのこれまでとこれから
goccy
4
2.1k
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
3
2k
Featured
See All Featured
Side Projects
sachag
455
43k
Bash Introduction
62gerente
615
220k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
680
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Design in an AI World
tapps
1
310
The Invisible Side of Design
smashingmag
301
52k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Odyssey Design
rkendrick25
PRO
2
800
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Transcript
Web キャッシュ ポイズニング ~Webのキャッシュを使った攻撃と対策~ @shunaroo
自己紹介 @shunaroo ▪ 経歴 (重複あり) ▪ Webアプリ開発 5~6年 ▪ Web/NW脆弱性診断
3~4年 ▪ コンサルもどき 1~2年 ▪ 趣味 ▪ 犬を愛でる ▪ ゴルフ
Web キャッシュ ポイズニングとは? ▪ 攻撃者が用意した悪意のあるWebキャッシュに被害者がアクセスすることで発生する攻撃 攻撃者 被害者 悪意のある Webキャッシュ 攻撃者に利用された
サーバ キャッシュサーバ
Web キャッシュとは? ▪ Webコンテンツを一時的に保存(キャッシュ)しておくこと。 ▪ キャッシュ専用のサーバを用意しておくことで、Webコンテンツの応答速度や効率を上げること ができる 利用者A キャッシュされた コンテンツ
キャッシュサーバ 利用者B キャッシュサーバからコンテンツを取得できるので、 利用者Bはその分早く受け取れるし、 元のサーバの負荷も減る 同じWebコンテンツにアクセスする場合 キャッシュがない場合は 元のサーバまで取りに行く
キャッシュキーとアンキャッシュキー ▪ キャッシュサーバが、リクエストを受けた際に、「何をもって同じリクエストか」を判断する目印が必要 ▪ その目印を「キャッシュキー(Cache Key)」と呼ぶ ▪ 少なくとも、どのサイト(Hostヘッダ)のどのコンテンツ(リクエストライン)かを識別する値は、 キャッシュキーの一部となる ▪
キャッシュキーにならないリクエストの部分を「アンキャッシュキー(Uncache Key)」と呼ぶ キャッシュキー例 アンキャッシュキー例
Webキャッシュポイズニングの主な条件 ①元のサイトから悪意のあるレスポンスを引き出せる ▪ 本来アクセスしたいサイト以外にリダイレクトされる ▪ 不正なスクリプトが動作する など ②攻撃が悪用できる状態でキャッシュできる 元のサイト 悪意のある
Webキャッシュ キャッシュサーバ 被害者
攻撃のステップ ①攻撃に使えるアンキャッシュキーを特定する キャッシュキーに、攻撃用のペイロードを載せられたとしても、 攻撃するためには、被害者も同様に攻撃用のペイロードを載せたリクエストを送る必要がある(影響小) アンキャッシュキーを用いて、攻撃することができれば、 被害者はサイトにアクセスするだけで、攻撃が成立するようになる(影響大) 特定方法としては、Burp SuiteのプラグインParam Minerが有名 ②キャッシュさせる
すぐにキャッシュされなかったり、短期間で消えてしまう可能性があるので、注意深く観察する
学習用サイト Web Security Academy ▪ Lab: Web cache poisoning with
an unkeyed header <https://portswigger.net/web-security/web-cache-poisoning/exploiting-design- flaws/lab-web-cache-poisoning-with-an-unkeyed-header> ▪ アンキャッシュキーに含まれる値を用いてJSの読み込み先を変更していることを利用して、 読み込み先を攻撃者が用意してるサーバに変更し、攻撃する
解法例 ステップ① ▪ Param Minerでアンキャッシュキーを探索
解法例 ステップ② ▪ 「x-forwarded-host」がアンキャッシュキーとして悪用できそうであるとわかる
▪ リクエストレスポンスを確認してみる 解法例 ステップ③
解法例 ステップ④ ▪ リクエストレスポンスを確認してみる JSの読み込み先が「x-forwarded-host」で指定したドメインに変わっている。 悪意のあるレスポンスを引き出せることがわかる
解法例 ステップ⑤ ▪ 攻撃用サーバの準備 このURLにアクセスすると、 alert(document.cookie)が返却される
解法例 ステップ⑥ ▪ JSの読み込み先を攻撃用サーバに変え、かつキャッシュされるようにリクエストを数回送信 キャッシュキー 攻撃用サーバのドメイン
解法例 ステップ⑦ ▪ JSの読み込み先を攻撃用サーバに変え、かつキャッシュされるようにリクエストを送信 キャッシュから取得 読み込み先が攻撃者のサーバに変わっている
解法例 ステップ⑧ 検証完了 ▪ トップページアクセスすることで、攻撃者が用意したスクリプトが作動
対策 ▪ キャッシュさせない ←難しい ▪ キャッシュキー/アンキャッシュキーをきっちり把握し、悪意のあるレスポンスを発生させない 魔法のような対策はない。地道な情報収集と検証が大事
参考 ▪ Web cache poisoning ▪ https://portswigger.net/web-security/web-cache-poisoning