Jenkins と owasp zap で自動診断

53
Jenkins と OWASP ZAP で自動診断 OWASP Evening Okinawa #2

Transcript of Jenkins と owasp zap で自動診断

Jenkins と OWASP ZAP で自動診断

OWASP Evening Okinawa #2

目次

❏ 自己紹介

❏ 脆弱性診断とは

❏ 自動診断について

❏ 動かしてみた

❏ まとめ

注意

本資料で紹介した内容について

他者が管理しているサービスでは

試さないようにお願いします。

自己紹介

❏ 自己紹介

❏ 脆弱性診断とは

❏ 自動診断について

❏ 動かしてみた

❏ まとめ

自己紹介

名前 桃原 裕太 / とうばる ゆうた

所属 株式会社 シーエー・アドバンス 技術統括本部

経歴 前職 ・ECサイト等の開発株式会社 シーエー・アドバンス ・社内ツールの開発 ・脆弱性診断の業務に携わって約4年

業務 Webアプリケーション脆弱性診断 ・PCブラウザ向けアプリ ・SPブラウザ向けアプリ ・Androidアプリ ・iOSアプリ

脆弱性診断とは

❏ 自己紹介

❏ 脆弱性診断とは

❏ 自動診断について

❏ 動かしてみた

❏ まとめ

脆弱性診断とは

Webサイトに脆弱性がないか、

擬似攻撃を行って調査しています。

脆弱性診断とは

例)商品購入(正常なパターン)

itemId name price

1 アイテム1 100円

2 アイテム2 200円

購入(itemId=1,price=100)

アイテム1入手

脆弱性診断とは

例)商品購入(不正なパターン)

itemId name price

1 アイテム1 100円

2 アイテム2 200円

購入(itemId=1,price= 50)

アイテム1入手

脆弱性診断とは

調査した結果、脆弱性だと判断した場合は開発者へ報告します。

タイトル 商品を任意の価格で購入することが可能

危険度 High

説明 パラメータpriceを操作することで、

任意の価格で商品を購入することが可能。

影響 売上の減少など

脆弱性診断とは

診断観点

❏ OSコマンドインジェクション

❏ SQLインジェクション

❏ クロスサイトスクリプティング(XSS)

❏ クロスサイトリクエストフォージェリ

❏ 不適切な認証及びパスワードリセット機能

❏ オープンリダイレクタ

❏ ヘッダインジェクション

❏ オートコンプリート機能の有効

❏ アプリケーションエラーの開示

❏ X-Content-Type-Optionsヘッダの未設定

❏ セッション固定攻撃

❏ セッション管理

❏ アクセスコントロールの不備

❏ エラー処理の不備

❏ アプリケーションロジックの不備

❏ パストラバーサル

❏ クリックジャッキング

❏ チート行為

❏ HttpOnly属性が付与されていないCookieの利用

❏ その他

脆弱性診断とは

多い(;^ω^)

脆弱性診断とは

通常はリリース前に

診断していますが

脆弱性診断とは

報告数が多い場合は

修正が大変です

脆弱性診断とは

※こういう状況は稀ですが、実際にあります

脆弱性診断とは

もっと円滑に

効率よく

診断するには?

脆弱性診断とは

開発中に

自動で診断しよう!

自動診断について

❏ 自己紹介

❏ 脆弱性診断とは

❏ 自動診断について

❏ 動かしてみた

❏ まとめ

自動診断について

Q. 脆弱性診断の自動化って

  どうやるの?

自動診断について

Q. 脆弱性診断の自動化って

  どうやるの?

A. OWASP ZAP で出来ます!

自動診断について

Q. OWASP ZAPとは?

自動診断について

Q. OWASP ZAPとは?

A. オープンソースの

  脆弱性診断ツールです。

  GUI や API 操作で診断できます。

脆弱性診断とは

OWASP ZAPの診断項目について。Webサイトにおいて主要な脆弱性を見つけることができます。

❏ Code Injection

❏ Command Injection

❏ Client Browser Cache

❏ Cross Site Scripting (reflected)

❏ Cross Site Scripting (persistent)

❏ CRLF Injection

❏ Directory Browsing

❏ External Redirect

❏ Format String Error

❏ Parameter Tampering

❏ Path Traversal

❏ Remote File Include

❏ Server Side Include

❏ SQL Injection

❏ Other

※なお、アプリ側の”アクセス権の侵害”等の脆弱性は自動診断で見つけられません。

 全ての脆弱性が取り除けるわけではないので注意が必要です。

参考リンク:https://github.com/zaproxy/zap-core-help/wiki/HelpAddonsAscanrulesAscanrules

自動診断について

Q. 開発中に自動診断するなら

  どのタイミング?

自動診断について

Q. 開発中に自動診断するなら

  どのタイミング?

A. デプロイが成功した時

自動診断について

下記のツールを使いました

❏ Jenkins

❏ OWASP ZAP

❏ infobyte/faraday

※それぞれ Docker Hub に公式イメージがあります

※ infobyte/faraday は診断結果閲覧用です

自動診断のイメージについて説明します

自動診断について

Jenkins でデプロイを実行

自動診断について

Jenkins でデプロイを実行(成功)

自動診断について

デプロイ成功後、自動診断スクリプトを実行

自動診断について

OWASP ZAP の API で、サイトクロール&脆弱性診断

自動診断について

診断終了後、レポートを取得(XML形式)

自動診断について

レポートを Faraday にアップロード

自動診断について

自動診断について

あとはレポートを

確認するだけです!

自動診断について

実際の流れについて

説明していきます

動かしてみた

❏ 自己紹介

❏ 脆弱性診断とは

❏ 自動診断について

❏ 動かしてみた

❏ まとめ

動かしてみた

その前に

動かしてみた

投稿後、赤枠内でXSSが発生するデモサイトを準備しました。

動かしてみた

それでは本題に

入っていきます

[jenkins] ジョブを2つ登録

動かしてみた

weak-app デプロイ

weak-app-auto-secaudit デプロイ後に自動診断スクリプトを実行

[jenkins] デプロイ(weak-app)のジョブ詳細

動かしてみた

[jenkins] 自動診断(weak-app-auto-secaudit)のジョブ詳細

動かしてみた

動かしてみた

[jenkins] デプロイ(weak-app)ビルドの実行

動かしてみた

[デモサイト] データがOWASP ZAPで登録されている様子

動かしてみた

[jenkins] XMLレポートを作成して診断完了

動かしてみた

[Faraday] レポート画像(ダッシュボード)

動かしてみた

[Faraday] レポート画像

XSSを検出 !!

動かしてみた

[Faraday] レポート画像

発生箇所

動かしてみた

[デモサイト] クロスサイト・スクリプト(XSS)発生箇所

まとめ

❏ 自己紹介

❏ 脆弱性診断とは

❏ 自動診断について

❏ 動かしてみた

❏ まとめ

まとめ

❏ 脆弱性診断時の報告数を減らしたい

❏ 開発中に脆弱性に気付ける環境を作る

❏ 今回使ったツール

❏ Jenkins

❏ OWASP ZAP

❏ infobyte/faraday

まとめ

今回検証したソースはGitHubにアップしています。

https://github.com/toubaru/auto-secaudit

参考リンク

OWASP ZAP API + hubot/slackで作る脆弱性スキャンボット

 https://speakerdeck.com/owaspjapan/owasp-zap-api-number-owasp-night-21th

ご静聴ありがとうございました