Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

脆弱性スキャナとは? ・脆弱性スキャナは対象の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

Slide 5

Slide 5 text

脆弱性スキャナとは? ・脆弱性スキャナは対象の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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

できました 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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