Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DOM Invader - Burp Suiteの新機能でJavaScriptに立ち向かう - / DOM Invader

2c4ef0f20c4f05ca30e6c9917f0c17b6?s=47 okuken
July 30, 2021

DOM Invader - Burp Suiteの新機能でJavaScriptに立ち向かう - / DOM Invader

Burp Suiteの新機能「DOM Invader」について解説します。

2c4ef0f20c4f05ca30e6c9917f0c17b6?s=128

okuken

July 30, 2021
Tweet

Transcript

  1. DOM Invader Burp Suite の新機能で JavaScript に立ち向かう @okuken3 2021.07.30 第9回

    初心者のためのセキュリティ勉強会
  2. かつてのWeb。 古のWebアプリケーションにおいて JavaScriptの役割は極めて限定的だった

  3. 2021年。 時は過ぎ

  4. None
  5. None
  6. 0. 自己紹介 1. DOM Invader とは 2. DOM Invader の起動

    3. DOM Invader の使い方 4. DOM Invader は開発中 5. まとめ Agenda
  7. Kenichi Okuno  Twitter: @okuken3 略歴  1. SIerで色々  2. 業務パッケージベンダで開発  3.

    Web事業会社でプロダクトセキュリティチーム立上げ  4. 情報セキュリティサービス会社でWeb脆弱性診断 最近の出来事  ・社外向け勉強会講師にトライ  ・オンライン学習サイト楽しい
  8. 1. DOM Invader とは

  9. 端的に言うと  ✓ 興味深いシンクとソースを検出&一覧表示!  ✓ スタックトレースの表示&該当行へジャンプ!  ✓ Web Message 特化の機能群もあるよ!

  10. ソース?シンク??

  11. ソース?シンク?? eval element.innerHTML 値 location.pathname document.cookie location.hash

  12. 機能概要 DOM-based XSS 関連  ・カナリアによるシンク/ソース検出  ・カナリアの自動挿入  ・イベントの自動発火  ・リダイレクト防止 Web Message

    関連  ・window.postMessage のキャプチャ  ・脆弱性スキャン  ・カナリアの自動挿入  ・Messageのリピート送信  ・Messageの自動生成/送信  ・Originのスプーフィング DOM Invader 本日はこちらを解説
  13. 製品ロードマップ上の位置付け Roadmap for Burp Suite Professional https://portswigger.net/burp/pro/roadmap Roadmap update: July

    2021 (09 July 2021 at 10:50 UTC) https://portswigger.net/blog/burp-suite-roadmap-update-july-2021
  14. リリース情報 Professional / Community 2021.7 [Early Adopter] (30 June 2021

    at 16:45 UTC) https://portswigger.net/burp/releases/professional-community-2021-7 Professional / Community 2021.7.1 [Early Adopter] (13 July 2021 at 15:00 UTC) https://portswigger.net/burp/releases/professional-community-2021-7-1
  15. リリース情報 Professional / Community 2021.7.2 [Early Adopter] (22 July 2021

    at 14:00 UTC) https://portswigger.net/burp/releases/professional-community-2021-7-2
  16. ドキュメント / 公式ブログ DOM Invader [PROFESSIONAL] [COMMUNITY] https://portswigger.net/burp/documentation/desktop/tools/dominvader Introducing DOM Invader:

    DOM XSS just got a whole lot easier to find https://portswigger.net/blog/introducing-dom-invader  - 解説動画あり ★おすすめ★  - ソースとシンクの一覧あり Finding DOM Polyglot XSS in PayPal the Easy Way https://portswigger.net/research/finding-dom-polyglot-xss-in-paypal-the-easy-way
  17. 2. DOM Invader の起動

  18. DOM Invader の起動 1. Early Adopter になる  - DOM Invaderは正式リース前であり、Early

    Adopterにのみ提供されている(2021/07/30時点)  - 設定経路:User options > Misc > Updates  - 設定後に Help > Check for updates を実行すると、Early Adopterのリリースが取得される initial problems が含まれる版になるため、Burpを業務利用している場合は注意が必要です。
  19. 2. 内臓ブラウザを起動する  - DOM Invader は内臓ブラウザ(Chromium)のアドオンとして実装されている  - 起動経路:Proxy > Intercept

    > Open Browser 3. Burp Suite Container extension(アドオン)をピン留めする DOM Invader の起動
  20. 4. DOM Invader を有効化する  - デフォルトはoff(対象のWebアプリケーションを壊しかねないため) ※公式ドキュメント参照 診断対象以外のサイトにアクセスする際は無効化しておくのが無難でしょう。 DOM Invader

    の起動
  21. 3. DOM Invader の使い方

  22. 1. 開発者ツールを起動する(F12) DOM Invader の使い方 DOM Invader の 独自タグが2つ追加されている シンク(Sinks)とソース(Sources)は

    ここに表示される 便利機能ボタン
  23. 2. Colnsoleタブを画面下部に表示しておく(ESC) あとで使います! DOM Invader の使い方

  24. 3. 診断対象の画面を開く ※お馴染み OWASP Mutillidae Ⅱ で説明していきます。 https://github.com/webpwnized/mutillidae DOM Invader

    の使い方
  25. 4. 便利機能でカナリア(+α)を自動セット! → 404 😢 ①「inject canary into URL」ボタンを押下 ②各URLパラメータにカナリアが挿入され、  画面がリロードされる ③その結果、404に。

     原因はURLパラメータpageの不正値。  pageはカナリア入れたらダメなやつ。 DOM Invader の使い方
  26. 5. (気を取り直して、) pageパラメータのカナリアを除去してリロード → 200👍 でも、シンクは検出されていない…。 あるはずなんだけど………………… DOM Invader の使い方

  27. 6. 便利機能で挿入したカナリア、+α部分が早まり過ぎじゃない?😓 カナリア+ナンバリング の半自動挿入は有難いけど、 この時点で「\<>'":」まで入れちゃうのは行き過ぎ? DOM Invader の使い方

  28. 7. +α部分を除去 → シンクが検出された!  ので、掘り進めていく!! 👍 ②Stack Traceリンクをクリック! ①シンク(Sinks)が検出された!  カナリアが

    element.innerHTML に  流れ着いたらしい!! DOM Invader の使い方
  29. 8. Consoleタブにスタックトレースが表示された!  さらに掘り進めていく!! 👍 スタックトレース内のリンクをクリック! DOM Invader の使い方

  30. 9. 該当部分のソースコード(JavaScript)が表示された!! 😂 ①Sourcesタブが開かれて ②該当箇所が光り輝いている!! DOM Invader の使い方

  31. 10. DOM-based XSS ができそうか試してみる ①innerHtmlなので、  「</>」を入れたらどうなるか試してみる。  画面をリロード。 ②「</>」がエスケープされずにシンクに至っている!! DOM Invader

    の使い方 いやこれ、</script><script>alert(1)</script> で反射型XSSもいけるやつやん…
  32. 11. 仕上げ DOM Invader の使い方

  33. 真価を発揮できていない気が…

  34. 3’. 診断対象の画面を開く DOM Invader の使い方(その2) ※DOM Invader解説動画でも使用されている検証サイトを利用() https://portswigger-labs.net/dom-invader/ 真価を発揮すべく、  ソース:location.hash

     シンク:eval の例で解説する!
  35. 4’. 便利なオプションをON! ①「inject canary into all sources」  をonにして ② Reload

    をクリック DOM Invader の使い方(その2)
  36. 5’. It’s automatic!!! ①ソース(location.hash)に自動でカナリア(+一意の値)が挿入され ②シンク(eval)にカナリアが流れ着いたことを見て取れる! DOM Invader の使い方(その2)

  37. 6’. 先程と同様に該当ソースへ掘り進めると… ハッシュの先頭の「#」を除いた部分が そのままevalに渡されている DOM Invader の使い方(その2)

  38. 7’. カナリアにペイロードを打ち込む! ①カナリアを「alert(1)」に変更し、  「Update canary」をクリック! ②Reloadボタンが出現するので、  クリック! DOM Invader の使い方(その2)

  39. 8’. ・・・😵 カナリアの+α部分が邪魔して 発火せず・・・orz DOM Invader の使い方(その2)

  40. 9’. (気を取り直して、) 仕上げ +α部分をコメントアウトすべく、 末尾に「//」を付加 DOM Invader の使い方(その2)

  41. 10’. 👍 DOM Invader の使い方(その2)

  42. DOM Invader の使い方(おまけ) すべてのシンクおよびソースを検出したい? ⇒ カナリアを空に設定すればOK! https://twitter.com/PortSwigger/status/1414592885429882880?s=20

  43. 4. DOM Invader は開発中

  44. None
  45. 2021.7 版で欲しいと思った機能が 2021.7.1 版で追加されており 追加された機能の不満が 2021.7.2 版で解消されている! ↑使い方(その2) の用途を考えるとデグレな気がしなくもないが…

  46. 5. まとめ  ✓ DOM Invader は複雑化するJSを照らす一筋の光!(希望)  ✓ 正式リリースが待ち遠しい!(期待)  ✓ ISTE

    もよろしく!(宣伝)
  47. None