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

WebアプリをOWASP TOP 10に対応させよう / #shibuyaxss techtalk #10

WebアプリをOWASP TOP 10に対応させよう / #shibuyaxss techtalk #10

WebアプリをOWASP TOP 10に対応させよう / #shibuyaxss techtalk #10

hasegawayosuke

December 13, 2017
Tweet

More Decks by hasegawayosuke

Other Decks in Programming

Transcript

  1. Shibuya.XSS techtalk #10
    2017-12-13 Yosuke HASEGAWA
    Webアプリを
    OWASP TOP 10に
    対応させよう

    View Slide

  2. OWASP TOP 10 - 2017
    •2017版でました(RC1の段階で
    いろいろもめた)
    https://www.owasp.org/images/7/72/OWASP_Top_10-2017_%28en%29.pdf.pdf

    View Slide

  3. OWASP TOP 10 - 2017
    • A1 インジェクション
    • A2 認証の不備
    • A3 機密データの露出
    • A4 XML外部実体参照(XXE)
    • A5 アクセス制御の不備
    • A6 セキュリティ設定のミス
    • A7 クロスサイトスクリプティング
    • A8 安全でないデシリアライゼーション
    • A9 既知の脆弱性を持つコンポーネントの使用
    • A10 不十分なロギングおよび監視

    View Slide

  4. Q. 御社のWebサイト/製品/サービスは
    OWASP TOP 10 対応してますか?

    View Slide

  5. OWASP TOP 10対応
    • 対応例 →

    View Slide

  6. OWASP TOP 10対応
    • 対応例 ↓

    View Slide

  7. 自分のWebアプリも
    OWASP TOP 10対応してみよう

    View Slide

  8. 「自分のWebアプリ」 is 何?
    • やられWebアプリその1
    • やられWebアプリその2
    • やられWebアプリその3
    • やられWebアプリその4
    やられWeb アプリしか作ってない!

    View Slide

  9. やられWebアプリの
    OWASP TOP 10対応をしよう

    View Slide

  10. BadLibrary - 脆弱性の演習用やられWebアプリ
    http://bit.ly/BadLibrary

    View Slide

  11. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  12. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  13. View Slide

  14. View Slide

  15. mail='[email protected]'
    [email protected]' (存在しない)
    ブラインドSQLi !

    View Slide

  16. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  17. セッションIDが「1」
    セッションIDの再発行を
    していない

    View Slide

  18. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  19. View Slide

  20. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  21. View Slide

  22. View Slide

  23. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  24. View Slide

  25. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  26. View Slide

  27. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  28. View Slide

  29. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  30. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  31. A1 インジェクション SQLインジェクション
    A2 認証の不備
    セッションIDが連番、ログイン後の再発行
    なし、httponlyなし
    A3 機密データの露出 問い合わせログが閲覧可能
    A4 XML外部実体参照(XXE) XXE
    A5 アクセス制御の不備 管理画面が誰でもアクセス可能
    A6 セキュリティ設定のミス ディレクトリリスティング
    A7 クロスサイトスクリプティング 反射型XSS、DOM-based XSS
    A8 安全でないデシリアライゼーション ―
    A9 既知の脆弱性を持つコンポーネントの使用 ―
    A10 不十分なロギングおよび監視 ログを記録していない

    View Slide

  32. BadLibrary - 脆弱性の演習用やられWebアプリ
    • 代表的な多種の脆弱性をそれなりに含む
    • OWASP TOP 10を(ほぼ)網羅
    • 脆弱性の有無を簡単に切り替え可能
    • 動かし続けてもそれなりに安全
    http://bit.ly/BadLibrary

    View Slide

  33. 脆弱だけど安全
    • お問い合わせログでディスクを消費する
    • 設定で無効にできる
    • XXEでサーバー上のファイルが漏洩する
    • 設定で無効にできる
    • 長期運用でメモリーリーク
    • セッションオブジェクトのメモリを解放していない…

    View Slide

  34. Question ?
    @hasegawayosuke
    http://utf-8.jp/
    securitytesting Slack team
    http://slackin.csrf.jp/

    View Slide