Slide 1

Slide 1 text

2024/2/17 P3NFEST / Masato Kinugawa バグハンティング のすゝめ

Slide 2

Slide 2 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 自己紹介 • Masato Kinugawa • Webアプリやブラウザの脆弱性を探すのが好き • XSS脆弱性が好き • 2010~2015: 専業バグハンター • 2016~: Cure53で脆弱性診断

Slide 3

Slide 3 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ここへ来ることになったきっかけ • IssueHuntを通じてBug Bounty実施企業へ脆弱性報告をする • 使ってみて不便に思う点があったのでフィードバック • 代表の横溝さんから直接連絡をいただく • 問い合わせた件はすぐに対応される • その流れでお話をいただく

Slide 4

Slide 4 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 今日の話 • 僕とBug Bounty • 経歴から、ただならぬ深い関係を紹介 • どうやって探せるようになっていったか • Bug Bountyの良さ • Bug Huntingの面白さ • 何がそんなに面白いのか • 発見の具体例を挙げつつ紹介 自分の経験からバグバウンティ・バグハンティングの 魅力を少しでも伝えられたら!

Slide 5

Slide 5 text

僕と Bug Bounty

Slide 6

Slide 6 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 専業バグハンター? どうしてそうなった?

Slide 7

Slide 7 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 子供時代 • コンピュータが好きな自覚はあった • パソコンで作業するのが好き • 「情報」教科は勝手に成績がよかった • 特別自慢できるスキルはなかった • セキュリティはまだなにも • プログラミングもできない 好きに従って 情報系の大学へ進もうとするが…

Slide 8

Slide 8 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ どん底の学生時代(~2010) • 大学受験に繰り返し失敗 • 取り柄だと思っていた勉強に対する挫折 • 負の連鎖から鬱のような状態になる • いったん情報系の専門学校へ行くことに • ひとまず好きなことをやった方が良いという鬱経験者のアドバイスから • 最初は楽しかったが、途中から行けなくなる • 資格取得と就職に特化されたカリキュラム • 目的のズレで滅入る、鬱は続く • 結局、進級の出席日数が足りなかったため退学を選択→無職へ

Slide 9

Slide 9 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ セキュリティとの出会い(2009~2010) • もう好きに自分で勉強しよう • コンピュータを勉強したい気持ちは残っていた • そんなときにたまたまWebの脆弱性を解説した記事を見る • それを見て何気なくその辺のサイトでタグを入れると… (※ランダムなサイトで積極的な脆弱性のテストをすることは推奨しません。万が一見つけたら報告しましょう。)

Slide 10

Slide 10 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 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

Slide 11

Slide 11 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ もっとXSSについて知りたい • XSSを起点に勉強を始める • JavaScript/HTML/CSS • HTTPの基本 • XSSに関係するブラウザ周りの技術 • Same Origin Policy • 文字コード • Content-Type • レスポンスヘッダ • Cookie • XSSフィルター • ブラウザごとの挙動の違い XSS1つをきっかけにかなりの技術を学ぶことができた

Slide 12

Slide 12 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ここでBug Bounty登場 • GoogleがWebアプリでBug Bountyを開始(2010/11) • ブラウザなどでは既にあったがWebアプリでは初 • もちろんXSSも対象 • 探してみると結構みつかる • 1か月程度で$7,337分のバグを見つける

Slide 13

Slide 13 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 専業バグハンターへ(2010~) • 楽しいだけでなくお金を貰えるモチベもできた • 勉強したことが報われた感覚があった • もっと脆弱性を探したい! バグバウンティを仕事にする 専業バグハンター人生が突然はじまる

Slide 14

Slide 14 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 専業バグハンターの生活 業務 :脆弱性を探す 収入 :報奨金 年収 :発見次第 職場 :自宅 同僚 :なし 働く日 :やる気がある時 休みの日 :やる気が無い時

Slide 15

Slide 15 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 脆弱性を探す日々(2010~2015) • Googleを中心に探し続ける • 他企業もBug Bountyを続々始め出す • Facebook、PayPal、HackerOne、サイボウズなど • こっちへも報告 • ブラウザの脆弱性を探すことにも挑戦 • IEの脆弱性を見つけてこんなdebitカードを貰う→ • 気付くと生活に十分な収入を稼げていた • XSSで飯を食う生活

Slide 16

Slide 16 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 人との繋がりもできる • 「めんどうくさいWebセキュリティ」という本をご恵贈いただく • 原著者はGoogleのBug Bountyの担当者 • 本の中に自分が報告した攻撃が紹介されていたのがきっかけ • 監修の上野宣さんとのここでの繋がりからオフラインのイベント 「セキュリティ・キャンプ」に参加させて頂く

Slide 17

Slide 17 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ セキュリティ・キャンプ • 合宿形式でセキュリティを学べる学生を対象にしたイベント • 業界のエキスパートが講師を務める • 地方開催のミニキャンプも https://www.security-camp.or.jp/index.html

Slide 18

Slide 18 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ キャンプに参加して • 5年間参加させて頂く • 2013:チューター • 2014~1017:講師 • ここでWeb以外のセキュリティの世界を知る • 特に低レイヤーの脆弱性へ興味を持つ • アラートだけじゃなく電卓も出したい • そんなとき、講師の竹迫良範さんの紹介でサイボウズ・ラボ ユースという制度を紹介される

Slide 19

Slide 19 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ サイボウズ・ラボユース • サイボウズ・ラボによる、学生のソフトウェア研究開発を応援 してくれる制度 • ラボの社員の方に指導を受けながら開発が可能 • 奨励金あり • 第4期生(2014) • ラボの光成滋生さんのアドバイスをもらいながら、低レイヤー の脆弱性の発見を目指した その結果、Lhaplusと秀丸エディタにバッファオーバーフローを発見 https://labs.cybozu.co.jp/youth.html

Slide 20

Slide 20 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 余談 • 学生が参加条件だったが、自分が応募した年から未就業者も可 能にして頂いた

Slide 21

Slide 21 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ Cure53へ(2016~) • XSS界で有名なMario Heiderichさんの情報セキュリティ会社 • 同社が毎年開催している高難易度のXSSチャレンジを何度か解 いた後にお誘いを受け、2016年1月チームへ加入 • 今年で9年目、素晴らしいチーム!

Slide 22

Slide 22 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ なぜCure53へ? • Marioさんがいること • 新しいことに挑戦したい気持ちから • バグハンターの自由気ままな生活も好きだが、それを理由に断 る必要がないくらい条件がフィットしていた

Slide 23

Slide 23 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ Cure53の生活 業務 :脆弱性を探す 収入 :働いた日数で貰える 年収 :プロジェクトの参加数次第 職場 :自宅 同僚 :いるけど全員リモート 働く日 :プロジェクトを入れた時 休みの日 :プロジェクトを入れていない時 バグハンター時代と大きくかわってない

Slide 24

Slide 24 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 最近の目立った活動:Pwn2Own • トレンドマイクロが運営する脆弱性発見コミュニティZDIによ るハッキングコンテスト(2007年~) • 2022年に参加しMicrosoft Teamsの任意コード実行に成功 • 賞金 $150,000 • バグハンター時代からの目標の1つをやっと達成できた

Slide 25

Slide 25 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ Bug Bountyと歩んだ十数年 • 何もできなかったところから、仕事になり、Pwn2Ownまで • 「楽しい」の原動力は大きい • Bug Bountyが自分の未来を明るくしてくれた • もっとステップアップしていくモチベをくれた • 社会との接点ができ、いろいろな機会をもらえた

Slide 26

Slide 26 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ Bug Bountyの良さ • 発見の成果が直接報酬になる • 達成感が大きい • スキルがあれば仕事として稼げるほどの対価が得られる • 一人でいつでもどこでもできる • カフェでも、深夜でも • 脆弱性研究が活性化され、人々が学び、世界が安全になる • 複雑なバグに時間を投資する動機付けになっている • かつてより情報共有が盛んになった印象

Slide 27

Slide 27 text

Bug Hunting の面白さ

Slide 28

Slide 28 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 脆弱性を見つけたアプリの例 • Webアプリケーション • Google、Microsoft、GitHub、LINE、サイボウズ • ブラウザ • Chrome、Safari、Firefox、MS Edge、Internet Explorer • ライブラリ・フレームワーク • AngularJS、jQuery、Electron、Ember.js • その他ソフトウェア製品 • Discord、Microsoft Teams、Lhaplus、秀丸エディタ、Adobe Flash

Slide 29

Slide 29 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ なぜそんなに脆弱性を探すの? • 楽しいから • お金がもらえるから • 世の中のためになるから • 人から認められるから

Slide 30

Slide 30 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ なぜそんなに脆弱性を探すの? •楽しいから • お金がもらえるから • 世の中のためになるから • 人から認められるから

Slide 31

Slide 31 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 「楽しい」の原動力は大きい • 無理なく継続できる • バグハンティングは長期戦 • 能動的に学ぶ姿勢ができる • バグハンティングは新しい学習の連続 • Bountyがもらえなくても気にならない • 面白い脆弱性をみつけられたからいいや • 勉強になったからいいや 幸せなバグハンターライフは 楽しみを見いだせるかにかかっている!

Slide 32

Slide 32 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ バグハンティングの面白さ 1. パズル的な楽しみ 2. 想定解がない面白さ 3. 攻撃対象の自由さ 4. 分解の楽しみ 5. 悪用を考える楽しみ

Slide 33

Slide 33 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 1. パズル的な楽しみ • インジェクション系のバグはパズルそのもの • 自分がXSSに惹かれた最初の要素 • 特定の縛りが発生したりするとさらに楽しいことになる • ある文字種が使えない • 文字数の制限 • 大文字にされてしまう…など • 制約はリアルバグで普通に起こる alert(1) ALERT(1)

Slide 34

Slide 34 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例:XSS kw = "**INPUT**"; https://example.com/search?keyword=**INPUT** 反映される こんなときのXSS

Slide 35

Slide 35 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #1 kw = "alert(1)//"; https://example.com/search?keyword=

Slide 36

Slide 36 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > × Round 2 ここで < と > を禁止したらどうか

Slide 37

Slide 37 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #2 kw = "";alert(1);""; https://example.com/search?keyword=";alert(1);"

Slide 38

Slide 38 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert × Round 3

Slide 39

Slide 39 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #3 kw = "";eval("a"+"lert(1)");""; https://example.com/search?keyword=";eval[...]

Slide 40

Slide 40 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval × Round 4

Slide 41

Slide 41 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #4 kw = "";location='javascript:a'+'lert(1)';""; https://example.com/search?keyword=";location[...]

Slide 42

Slide 42 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval : × Round 5

Slide 43

Slide 43 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #5 kw = "";location='javascript\x3Aa'+'lert(1)';""; https://example.com/search?keyword=";location[...]

Slide 44

Slide 44 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval : \ × Round 6

Slide 45

Slide 45 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #6 kw = "";location=String.fromCharCode(106,97,118,97,115,99, 114,105,112,116,58,97,108,101,114,116,40,49,41);""; https://example.com/search?keyword=";location[...]

Slide 46

Slide 46 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval : \ , . × Round 7

Slide 47

Slide 47 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #7 kw = "";location=name;""; https://example.com/search?keyword=";location[...]

Slide 48

Slide 48 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ XSS #7 補足 攻撃者のサイトからname属性付きフレームに埋め込む: すると埋め込まれている側の (window.)name に文字列が入る

Slide 49

Slide 49 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ < > alert eval Function setTimeout setInterval : \ , . A-Z a-z 0-9 × Round 8

Slide 50

Slide 50 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ kw = "";[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[ ]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[ +!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+ !+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+ !+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[] ]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+ !+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[ ]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![] +[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]] +(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+! +[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+ []]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+ []]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]] +(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[]) [+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![ ]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[ ]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![] +[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[] )[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[ ])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+ []]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[ ]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]]);""; JSFuck: https://jsfuck.com/

Slide 51

Slide 51 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ kw = "";[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[ ]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[ +!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+ !+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+ !+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[] ]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+ !+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[ ]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![] +[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]] +(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+! +[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+ []]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+ []]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]] +(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[]) [+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![ ]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[ ]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![] +[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[] )[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[ ])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+ []]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[ ]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]]);""; OK 1 JSFuck: https://jsfuck.com/

Slide 52

Slide 52 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ パズル的な楽しさ • 複雑な攻撃文字列はもはや芸術の域

Slide 53

Slide 53 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 2. 想定解がない面白さ • 実際にあるかは誰も知らないものを探すロマン • 脆弱性を故意に作る人間はいない • だからこそ発見には常に新鮮な驚きがある • 解を自分で創造する楽しみ • 以後利用され続けるような、発明とも言える手法が生まれることも

Slide 54

Slide 54 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例: IE/EdgeのXSSフィルター • かつてブラウザにあったXSS対策の機能 • URLと応答にXSSっぽい文字列があると発動し、ページの内容を 書き換えて攻撃を防止する • 例:URLと応答に javascript:1 があると応答が javasc#ipt:1に • この書き換えを利用してXSSを引き起こせた • つまり、XSS対策機能を使ってXSSできた XSSフィルターを利用したXSS攻撃 https://www.slideshare.net/masatokinugawa/xxn-ja

Slide 55

Slide 55 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ javascript: リンクの遮断ルールを騙す例: 実例: XSSフィルターの悪用 a=1 var q=":<img src=x onerror=alert(1)>"; URL: ?java%0A%0A%0A%0Ascript%0A%0A:\ フィルターは色に対応する部分で攻撃文字列にマッチしているとみなす

Slide 56

Slide 56 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ タグ名の一部を書き換え、HTML構造を破壊 実例: XSSフィルターの悪用 a=1 var q=":"; URL: ?java%0A%0A%0A%0Ascript%0A%0A:\ 遮断後:

Slide 57

Slide 57 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 黄色部分がタグとして現れ、XSSが起きる 実例: XSSフィルターの悪用 a=1 var q=":"; URL: ?java%0A%0A%0A%0Ascript%0A%0A:\ 遮断後:

Slide 58

Slide 58 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 想定解がない面白さ • 他人に試されているのではなく純粋に自分自身への挑戦

Slide 59

Slide 59 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 3. 攻撃対象の自由さ • 「攻撃に使えるかどうか」だけが重要 • 機能の新しさや古さは関係ない • セキュリティ機能だって悪く使えるなら使えばいい • だれも使っていない機能にこそ致命的な問題があることも • マイナーまたはアプリ独自のファイルフォーマットを処理する機能 • 特定のパラメータがある時だけ到達できるコード部分 • あるブラウザだけが実装している機能 • リンクされていない孤立したWebページ

Slide 60

Slide 60 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例1: Lhaplusのバッファオーバーフロー • 国産アーカイバ • ZOOという圧縮フォーマットの展開時に発生 • クリックで任意コード実行 • 拡張子を .zip に変えてもZOOとして展開された Lhaplus Version 1.72で修正 https://www7a.biglobe.ne.jp/~schezo/history.html

Slide 61

Slide 61 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例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");

Slide 62

Slide 62 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例3: QUnitのXSS • JavaScript用のテスト用のフレームワーク • フレームワークが使う静的なWebページにXSSがあった • テスト用の機能だが、あるアプリで、メインアプリと同じオリジ ンの公開ページで置かれていたためメインアプリを攻撃できた QUnit 1.21.0 XSS PoC https://vulnerabledoma.in/qunit/xss_1.21.0.html

Slide 63

Slide 63 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 攻撃対象の自由さ • どこを見ても何を学んでも発見に繋がる可能性がある • 知られざる路地を歩くようなトキメキ

Slide 64

Slide 64 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 4. 分解の楽しみ • ≒ソースコードを読む楽しみ • コードを1行ずつ追って詳細な動作を理解することはまさに"分解" • 機能は知っていてもその内部は知らないことも多い • 実は思いもよらない処理をしていることも • 動作を深く知ることが発見につながる

Slide 65

Slide 65 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例: 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>" ); }

Slide 66

Slide 66 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例: jQueryのXSS 元の文字列は安全: <x <x"> でも $('#div').html(htmlString) に通すと…

Slide 67

Slide 67 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 分解の楽しみ • ブラックボックスから少しずつ何かが見えてくるワクワク

Slide 68

Slide 68 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 5. 悪用を考える楽しみ • みつけたバグで何ができるか • 脅威を評価するために最悪のケースを考える • 時にはバグとバグを組み合わせることで致命的な問題に • 1つ1つは小さな問題でも怪物に化け得る

Slide 69

Slide 69 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 実例: Microsoft Teams のRCE(Pwn2Own) 3つのバグを組み合わせて任意コード実行を達成: メインウィンドウでのContext Isolationの欠如 チャットメッセージを通じたXSS PluginHostを通じたサンドボックス外でのJS実行 Pwn2OwnでMicrosoft Teamsをハッキングして2000万円を獲得した方法 https://speakerdeck.com/masatokinugawa/shibuya-dot-xss-techtalk-number-12

Slide 70

Slide 70 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 悪用を考える楽しみ • バグの連鎖はまるで現代の黒魔術

Slide 71

Slide 71 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ バグハンティングの面白さ(再掲) 1. パズル的な楽しみ 2. 想定解がない面白さ 3. 攻撃対象の自由さ 4. 分解の楽しみ 5. 悪用を考える楽しみ

Slide 72

Slide 72 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 何からしたらいいかわからない? • Webセキュリティを体系的に学ぶなら徳丸本 • XSSから始めるのもオススメ • 入り口はやさしくとっつきやすい • が、深く知ろうとするとブラウザセキュリティの神髄がつまっている • パズル的な面白さから入るなら「XSSチャレンジ」 • CTF (Capture The Flag)もオススメ • セキュリティ関連の知識を駆使して隠された文字列(flag)を探すゲーム • 仲間を作りたいとか、わいわい解いたりが好きな人は特に良いかも • いろんな分野の勉強ができるメリットも

Slide 73

Slide 73 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ 本格的に脆弱性を探していきたい? • 過去の発見から学ぶのが近道 • FirefoxやChromeの脆弱性は時間が経つと詳細が公開される • HackerOneや個人のブログなどの発見された脆弱性のwrite upも良い • 自身も何かを発見したらアウトプットを • コミュニティとつながりができる • コミュニティもあなたのブログから学べる • 人に説明することによってさらに理解が深まる

Slide 74

Slide 74 text

ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ ゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝゝ バグハンティングのすゝめ • バグ探し仲間が増えてほしい! • 国内はまだまだ英語圏ほど活動が活発でない印象があるので一緒に 盛り上げていきたい! • 企業の皆様ももっとバグバウンティの導入を!! • まずは受け付け体制を整えて、窓口からでも! • 難しく考えず、楽しむことが第一で良いと思う! • あとからお金も世界の安全もついてくるはず!

Slide 75

Slide 75 text

Thanks! 𝕏 @kinugawamasato @masatokinugawa.bsky.social