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

DOM Invader - prototype pollution対応の衝撃 - / DOM Invader - prototype pollution

okuken
June 27, 2022

DOM Invader - prototype pollution対応の衝撃 - / DOM Invader - prototype pollution

okuken

June 27, 2022
Tweet

More Decks by okuken

Other Decks in Technology

Transcript

  1. 0. 自己紹介 1. DOM Invader が prototype pollution に対応! 2.

    DOM Invader の復習 3. DOM Invader で prototype pollution を試してみよう! 4. まとめ Agenda
  2. Kenichi Okuno  Twitter: @okuken3 自己紹介 ・セキュリティエンジニア ・三井物産セキュアディレクション(MBSD)所属 ・主にWebアプリケーション脆弱性診断を担当 ・趣味で全集中Burp extension

    ISTEを開発 ・過去職ではWebアプリ開発やプロダクトセキュリティなど 最近の出来事/一言 ・運動の習慣化 ・ISTEのSlackお気軽にご参加ください
  3. リリース情報 Professional / Community 2022.6 [Early Adopter] (20 June 2022

    at 12:37 UTC) https://portswigger.net/burp/releases/professional-community-2022-6
  4. ドキュメント / 公式ブログ DOM Invader [PROFESSIONAL] [COMMUNITY] https://portswigger.net/burp/documentation/desktop/tools/dom-invader  - prototype pollution

    関連の記載はなし(2022/06/25時点) Finding client-side prototype pollution with DOM Invader https://portswigger.net/blog/finding-client-side-prototype-pollution-with-dom-invader  - 解説動画あり ★おすすめ★  - prototype pollution 自体の平易な解説もあり Widespread prototype pollution gadgets https://portswigger.net/research/widespread-prototype-pollution-gadgets  - prototype pollution gadget の具体例をソースコードを交えて解説
  5. ※※ 詳細は過去LT資料を参照ください ※※ DOM Invader - Burp Suiteの新機能でJavaScriptに立ち向かう - https://speakerdeck.com/okuken/dom-invader

    Web Messaging のセキュリティ - DOM Invaderを添えて - https://speakerdeck.com/okuken/web-messaging-security
  6. DOM Invader の起動 1. Early Adopter になる  - DOM Invaderは正式リース前であり、Early

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

    > Open Browser 3. Burp Suite Container extension(アドオン)をピン留めする DOM Invader の起動 復習
  8. 3. Prototype pollution sources(ソース)が検出された! ① Prototype pollution sources が2箇所検出された! ②「Scan

    for gadgets」を押下して、  Prototype pollution gadgets のスキャンを開始する!
  9. 11. Prototype pollution sources(ソース)のJavaScriptコードを確認する この時点で、cur には {} で初期化された Object が入っており、

    keys にはリクエストパラメータのパラメータ名を分割した配列が入っている。 先の例では、リクエストパラメータ __proto__[html]=<img src onerror=alert(1)> が設定されていたので、 keys は [‘__proto__’, ‘html’] であり、 forループの1周目で cur に {}.__proto__ が代入され、 forループの2周目で {}.__proto__.html = “<img src onerror=alert(1)>” が実行され、プロトタイプ汚染が 成立する。そして、汚染されたプロパティが先述の innerHTML への代入処理において o.html にて参照される。
  10. まとめ  ✓ DOM Invader が prototype pollution に対応!  ✓ prototype

    pollution source および gadget の検出から Exploit まで!  ✓ 正式リリースが待ち遠しい!