Slide 1

Slide 1 text

OWASP Night at Mar 5 2018 #owaspjapan t あなたの あなたのWeb Webアプリケーション あなたの あなたのWeb Web Webアプリケーション アプリケーション OWASP TOP 10 アプリケーション アプリケーション OWASP TOP 10 OWASP TOP 10に OWASP TOP 10 OWASP TOP 10に 対応できていますか に に 対応できていますか 対応できていますか 対応できていますか? Yosuke HASEGAWA

Slide 2

Slide 2 text

OWASP Night at Mar 5 2018 #owaspjapan t はせがわようすけ ▸OWASP Kansai チャプターリーダー ▸OWASP Japan アドバイザリボードメンバー

Slide 3

Slide 3 text

OWASP Night at Mar 5 2018 #owaspjapan t ▸ 日本語版 昨年末にリリースされました ▸ 日本語版翻訳コントリビューター https://www.owasp.org/images/2/23/OWASP_Top_10-2017%28ja%29.pdf Akitsugu ITO Albert Hsieh Chie TAZAWA Hideko IGARASHI Hiroshi TOKUMARU Naoto KATSUMI Riotaro OKADA Robert DRACEA Satoru TAKAHASHI Sen UENO Shoichi NAKATA Takanori ANDO Takanori NAKANOWATARI Tomohiro SANAE

Slide 4

Slide 4 text

OWASP Night at Mar 5 2018 #owaspjapan t ▸ A1:2017 - インジェクション ▸ A2:2017 - 認証の不備 ▸ A3:2017 - 機微な情報の露出 ▸ A4:2017 - XML外部エンティティ参照(XXE) ▸ A5:2017 - アクセス制御の不備 ▸ A6:2017 - 不適切なセキュリティ設定 ▸ A7:2017 - クロスサイトスクリプティング ▸ A8:2017 - 安全でないデシリアライゼーション ▸ A9:2017 - 既知の脆弱性を持つコンポーネントの使用 ▸ A10:2017 - 不十分なロギングとモニタリング

Slide 5

Slide 5 text

OWASP Night at Mar 5 2018 #owaspjapan t OWASP TOP 10 実際に体感はしにくい!?

Slide 6

Slide 6 text

OWASP Night at Mar 5 2018 #owaspjapan t ▸やられWebアプリはそれなりに色々世の中 になる ▸OWASP BWA ▸OWASP Juice Shop ▸既存やられWebアプリの問題 ▸含まれる脆弱性とOWASP TOP 10との関係性が 整理されていない ▸メンテされていないものも多い ▸動かす環境をつくるのが面倒 ▸多人数での演習に向かない ※上記BWAやJuice Shopがそうだというわけではありません

Slide 7

Slide 7 text

OWASP Night at Mar 5 2018 #owaspjapan t やられWebアプリ 作ってみた

Slide 8

Slide 8 text

OWASP Night at Mar 5 2018 #owaspjapan t http://bit.ly/BadLibrary

Slide 9

Slide 9 text

OWASP Night at Mar 5 2018 #owaspjapan t ▸BadLibrary http://bit.ly/BadLibrary ▸起動するまでが簡単 ▸Webアプリとしての機能が理解しやすい規模 ▸わかりやすい脆弱性がそこそこの量 ▸多人数でも安心して演習できる ▸含まれる脆弱性を設定で変更可能 % gi t cl one ht t ps: / / gi t hub. com / Secur eSkyTechnol ogy/ BadLi br ar y. gi t % cd sr c % npm i nst al l # ( SQLi t e3 ) % npm st ar t # 8080 W eb

Slide 10

Slide 10 text

OWASP Night at Mar 5 2018 #owaspjapan t ▸含まれる脆弱性の設定 / / conf i g. j son { " gl obal " : { " basi c" : " user : pass" / / BAI SC } , " vul ner abi l i t i es" : { / / " sql i " : [ " aut h" , " sear ch" , " bl i nd" ] , " xss" : [ " r ef l ect " , " st or ed" , " dom " ] , " sessi on" : [ " no- r ef r esh" , " no- ht t ponl y" , " ser i al " ] , " xxe" : t r ue, " csr f " : t r ue, " expose" : [ " di r i ndex" , " adm i n" , " cont act " ] } }

Slide 11

Slide 11 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 12

Slide 12 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 13

Slide 13 text

OWASP Night at Mar 5 2018 #owaspjapan t aaa / / conf i g. j son { " vul ner abi l i t i es" : { " sql i " : [ " aut h" ] } }

Slide 14

Slide 14 text

OWASP Night at Mar 5 2018 #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " sql i " : [ " sear ch" ] } }

Slide 15

Slide 15 text

OWASP Night at Mar 5 2018 #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " sql i " : [ " bl i nd" ] } } [email protected]

Slide 16

Slide 16 text

OWASP Night at Mar 5 2018 #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " sql i " : [ " bl i nd" ] } } [email protected] [email protected] (存在しないユーザー)

Slide 17

Slide 17 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 18

Slide 18 text

OWASP Night at Mar 5 2018 #owaspjapan t OWASP Night at Mar 5 2018 #owaspjapan t セッションIDが「1」 / / conf i g. j son { " vul ner abi l i t i es" : { " sessi on" : [ " no- r ef r esh" , " no- ht t ponl y" , " ser i al " ] } } 再発行されていない

Slide 19

Slide 19 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 20

Slide 20 text

OWASP Night at Mar 5 2018 #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " expose" : [ " di r i ndex" , cont act " ] } }

Slide 21

Slide 21 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 22

Slide 22 text

OWASP Night at Mar 5 2018 #owaspjapan t OWASP Night at Mar 5 2018 #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " xxe" : t r ue, " expose" : [ " adm i n" ] } }

Slide 23

Slide 23 text

OWASP Night at Mar 5 2018 #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " xxe" : t r ue, " expose" : [ " adm i n" ] } }

Slide 24

Slide 24 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 25

Slide 25 text

OWASP Night at Mar 5 2018 #owaspjapan t OWASP Night at Mar 5 2018 #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " expose" : [ " adm i n" ] } }

Slide 26

Slide 26 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 27

Slide 27 text

OWASP Night at Mar 5 2018 #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " expose" : [ " di r i ndex" , " cont act " ] } }

Slide 28

Slide 28 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 29

Slide 29 text

OWASP Night at Mar 5 2018 #owaspjapan t #owaspjapan t / / conf i g. j son { " vul ner abi l i t i es" : { " xss" : [ " r ef r ect " , " dom " ] } }

Slide 30

Slide 30 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 31

Slide 31 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 32

Slide 32 text

OWASP Night at Mar 5 2018 #owaspjapan t A1 インジェクション SQLインジェクション A2 認証の不備 セッションIDが連番、ログイン後の再発 行なし、httponlyなし A3 機微な情報の露出 問い合わせログが閲覧可能 A4 XML外部エンティティ参照(XXE) XXE A5 アクセス制御の不備 管理画面が誰でもアクセス可能 A6 不適切なセキュリティ設定 ディレクトリリスティング A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS A8 安全でないデシリアライゼーション ― A9 既知の脆弱性を持つコンポーネントの使用 ― A10 不十分なロギングとモニタリング ログを記録していない

Slide 33

Slide 33 text

OWASP Night at Mar 5 2018 #owaspjapan t ▸BadLibrary http://bit.ly/BadLibrary ▸起動するまでが簡単 ▸Webアプリとしての機能が理解しやすい規模 ▸わかりやすい脆弱性がそこそこの量 ▸多人数でも安心して演習できる ▸含まれる脆弱性を設定で変更可能

Slide 34

Slide 34 text

OWASP Night at Mar 5 2018 #owaspjapan t ▸脆弱だけど安全 ▸環境を破壊するような脆弱性は含まれていない ▸多人数で1台に対しての演習も可能 ▸不特定多数への公開では ▸お問い合わせログでディスクを消費する → 設定で無効にできる ▸XXEでサーバー上のファイルが漏洩する → 設定で無効にできる ▸長期運用でメモリーリーク セッションオブジェクトのメモリを解放していな い…

Slide 35

Slide 35 text

OWASP Night at Mar 5 2018 #owaspjapan t ▸@hasegawayosuke ▸http://utf-8.jp/