Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Webキャッシュポイズニング
Search
shunaroo
April 27, 2022
Technology
0
450
Webキャッシュポイズニング
Webのキャッシュを悪用することで、攻撃を行うWebキャッシュポイズニングとその対策を紹介します。
shunaroo
April 27, 2022
Tweet
Share
More Decks by shunaroo
See All by shunaroo
Browser In The Browserの紹介
shunaroo
0
100
Other Decks in Technology
See All in Technology
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
130
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
120
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
530
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
160
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
110
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
230
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
190
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
200
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
MLOps の現場から
asei
6
650
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
Docker and Python
trallard
42
3.1k
Thoughts on Productivity
jonyablonski
67
4.4k
Designing for Performance
lara
604
68k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Become a Pro
speakerdeck
PRO
26
5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Side Projects
sachag
452
42k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
A Tale of Four Properties
chriscoyier
157
23k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
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