$30 off During Our Annual Pro Sale. View Details »

脆弱性スキャナのOWASP ZAPを コードベースで扱ってみる / OWASP ZAP on a code base

task4233
August 08, 2022

脆弱性スキャナのOWASP ZAPを コードベースで扱ってみる / OWASP ZAP on a code base

GUIベースで利用することの多いOWASP ZAPを各言語から呼び出して活用する方法について話します。

## Links
Burp SuiteのAlerts: https://portswigger.net/kb/issues
OWASP ZAPのAlerts: https://www.zaproxy.org/docs/alerts/
ZAPのActions: https://github.com/zaproxy/action-api-scan
ZAPの本実装: https://github.com/zaproxy/zaproxy
ZAPのクライアントライブラリ: https://github.com/zaproxy?q=zap-api-
ZAPのAPIドキュメント: https://www.zaproxy.org/docs/api
StackHawk: https://www.stackhawk.com/

task4233

August 08, 2022
Tweet

More Decks by task4233

Other Decks in Technology

Transcript

  1. 脆弱性スキャナのOWASP ZAPを
    コードベースで扱ってみる
    セキュリティ・キャンプ LT大会
    2022/08/05
    Dクラス チューター
    @task4233

    View Slide

  2. 本LTで伝えたいこと
    ・脆弱性スキャナは対象のURLに脆弱性がないか
     確認するためのツール
    ・脆弱性スキャナは(クローリング&)スキャンで構成される
    ・OWASP ZAPはカスタマイズ性の高い脆弱性スキャナのOSS
    2

    View Slide

  3. ところであなたは誰ですか?
    ・最近インターン先で脆弱性スキャナを
     書いてる人
    ・2019年のセキュリティ・キャンプで
     脆弱性・マルウェア解析トラックに参加
    ・@task4233
    ・散歩とGoが好き
    ・https://task4233.dev
    3

    View Slide

  4. 脆弱性スキャナとは?
    ・脆弱性スキャナは対象のURLに脆弱性がないか確認する
     ためのツール
    ・PortSwiggerのBurp SuiteとOWASPのZAPが有名
    ・主要な脆弱性は網羅されている(Burp Suite, OWASP ZAP)
    製品 価格 機能面の強み(主観)
    Burp Suite ・Community Editionは無料
    ・Professionalは$399/年
    ・ZAPよりもドキュメントが豊富
    ・通信のInterceptができるので、手動で診断したい時に
     ZAPよりも便利
    ZAP ・無料
     (Apache-2.0 Licenseなので
      商用利用も可能)
    ・実装が全て公開されているので カスタマイズ性が高い
    ・Burp Suiteよりも手軽かつ包括的にスキャンできる
    4

    View Slide

  5. 脆弱性スキャナとは?
    ・脆弱性スキャナは対象のURLに脆弱性がないか確認する
     ためのツール
    ・PortSwiggerのBurp SuiteとOWASPのZAPが有名
    ・主要な脆弱性は網羅されている(Burp Suite, OWASP ZAP)
    製品 価格 機能面の強み(主観)
    Burp Suite ・Community Editionは無料
    ・Professionalは$399/年
    ・ZAPよりもドキュメントが豊富
    ・通信のInterceptができるので、手動で診断したい時に
     ZAPよりも便利
    ZAP ・無料
     (Apache-2.0 Licenseなので
      商用利用も可能)
    ・実装が全て公開されているので カスタマイズ性が高い
    ・Burp Suiteよりも手軽かつ包括的にスキャンできる
    5

    View Slide

  6. 脆弱性スキャナの仕組み概要
    URLのクローリング
    1. 対象ページにHTTPリクエスト
    2. HTTPレスポンスに含まれるURLを更にクローリング
    スキャン
    1. 対象ページに悪意のある挙動を起こす可能性のキーワードや
      ペイロードを含めてリクエスト
     例) https://victim.com/?q=' のようなもの
    2. レスポンスに影響があれば脆弱性があると判断する
    6

    View Slide

  7. OWASP ZAPでスキャンする流れ
    1. OWASP ZAP(GUI)を開く
    2. Automated Scanを選択する
    3. 診断対象のURLを入力する
    4. Attackをクリックする
      (target domainのクローリング&スキャン実行)
    7

    View Slide

  8. OWASP ZAPでスキャンする
    1. OWASP ZAP(GUI)を開く
    2. Automated Scanを選択する
    3. 診断対象のURLを入力する
    4. Attackをクリックする
      (target domainのクローリング&スキャン実行)
    →自動化したい!!!
    8

    View Slide

  9. 手軽に実行できるGitHub Actions
    https://github.com/zaproxy/action-api-scan
    ・OWASP ZAPをGitHub Actionsで実行してくれる君
    ・URLのクローリングにAjax Spiderが使えない
    9

    View Slide

  10. OWASP ZAPの2種類のクローラ
    Native SpiderとAjaxSpiderの2種類がある
    Native Spider
    ・静的なHTMLをHTTPリクエストで取得するだけ
    ・最近増えてきているSPAのページは包括的にクロールできない
    Ajax Spider
    ・AjaxベースのページもクロールできるCrawljaxをベースに
     したクローラ
    →AjaxSpiderを使いたいので、ZAPの仕組みを深掘ってみる
    10

    View Slide

  11. ZAPの仕組み
    ・ZAPデーモンに対してクライアントアプリ(GUI)からHTTP
     リクエストを飛ばしているだけ
     (https://github.com/zaproxy/zaproxy)
    ・自分でZAPデーモンを操作すれば良い!
    11

    View Slide

  12. 提供されているZAPクライアントライブラリ
    ・提供されているクライアントライブラリ
    →Python/Java/Go/.NET/Node.js/PHP(PR参照)
    ・ドキュメントはあって無いようなものなので、実装を読んで
     雰囲気で実装する
    (Doxygenで生成すれば良いと思ってる開発者多すぎませんか🤔)
    12

    View Slide

  13. できました 13

    View Slide

  14. まとめ
    ・脆弱性スキャナは対象のURLに脆弱性がないか
     確認するためのツール
    ・脆弱性スキャナは(クローリング&)スキャンで構成される
    ・OWASP ZAPはカスタマイズ性の高い脆弱性スキャナのOSS
    14

    View Slide

  15. 余談
    ZAPの魔改造
    ・スキャナを自分で書く
    ・既にある実装を高速化してセルフビルドする
    ZAPを魔改造して提供されているサービスもある
    ・StackHawk
    ・Pro: $35/月, Enterprise: $49/月
    →自作SaaSの狙い目かも?
    15

    View Slide