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

2019-11 Webアプリケーションセキュリティ/2019-11 Web applicati...

Cybozu
June 25, 2019

2019-11 Webアプリケーションセキュリティ/2019-11 Web application Security

Cybozu

June 25, 2019
Tweet

More Decks by Cybozu

Other Decks in Technology

Transcript

  1. この講義の内容 ▌情報セキュリティ(5分) ▌サイボウズで検出している脆弱性とハンズオン(60分) • クロスサイト・スクリプティング (XSS) ★ハンズオン • SQLインジェクション(SQLi) ★ハンズオン

    • 情報漏えい • クロスサイトリクエストフォージェリ(CSRF)★ハンズオン • HTTPのセキュリティ機能 ▌やられサイト (20分) ▌脆弱性の見つけ方(5分)
  2. サイボウズで採用しているCWE識別子 ▌サイボウズで採用しているCWE識別子と脆弱性タイプ CWE-16 環境設定 CWE-287 不適切な認証 CWE-20 不適切な入力確認 CWE-352 クロスサイトリクエストフォージェリ(CSRF)

    CWE-22 パス・トラバーサル CWE-362 競合状態 CWE-78 OSコマンド・インジェクション CWE-384 Session Fixation CWE-79 クロスサイト・スクリプティング (XSS) CWE-399 リソース管理の問題 CWE-89 SQLインジェクション CWE-601 Open Redirect CWE-93 CRLF Injection CWE-614 ログインの不備 - クッキーのセキュア属性不備 CWE-94 コードインジェクション CWE-Other その他 CWE-113 HTTPヘッダ・インジェクション CWE- DesignError 設計上の問題 CWE-200 情報漏えい CWE-264 認可・権限・アクセス制御
  3. XSS の例① (対策前) <h1><?php echo $_GET['name'] ?>さん</h1> index.php?name=AAA URL: GETリクエストパラメーター

    の値をそのまま表示させる AAAさん <scrip>alert(1)</script>さん index.php?name=<script>alert(1)</script>
  4. XSS の例② (対策前) <input type=“text” value= “a” onfocus=“alert(1)“ /> index.php?id=a”

    onfocus=“alert(1) フォーカス時に、alert(1) が表示される <input type=“text” value=“<?php echo $_GET[‘id’] ?>” />
  5. XSS の例② (対策後) index.php?id=a” onfocus=“alert(1) フォーカス時に何もならない <input type=“text” value=“<?php echo

    htmlspecialchars($_GET[‘id’]) ?>” /> <input type=“text” value= "&quot; onfocus=&quot;alert(1)"/>
  6. SQL インジェクションの原理(2) ▌SQL 文の構造を破壊され WHERE 句で指定される条件が常に「真」 になり、情報が漏えいします。 SELECT * FROM

    tbl_user WHERE id =‘{$_GET[‘id’]}’ id =‘’ OR 1=1 --’ ’ OR 1=1 -- userテーブルの情報がすべて表示される 診断時には AND(‘ and 1=0) を使うことが推奨です。
  7. Referer からの QueryString の漏えい ▌HTTP リクエストにはRefererというヘッダがあります。 ▌Referer は移動する前にどんなURLにアクセスしていたかの情報が記載 されます 製品ページ

    ▽ アクセスしていたURL https://hogehoge.cybozu.co m/hoge.cgi?user=username &pass=password 攻撃者のページ ▽ 送られるRefererヘッダ https://hogehoge.cybozu.co m/hoge.cgi?user=username &pass=password 遷移 usernameというユー ザーのパスワードは passwordか。
  8. セキュリティ機能 ▌HTTP では、セキュリティ機能を設定することができます • X-XSS-Protection • X-Content-Type-Options • X-Frame-Options •

    Content-Security-Policy • Content-Disposition: attachment; • Strict-Transport-Security 共通仕様として定められているものもあります。
  9. X-XSS-Protection: 1; mode=block ▌ブラウザ側でも XSS を防ぐための保護機能 X-XSS-Protection: 1; mode=block ブラウザの設定で、デフォルトで有効になっている

    XSS フィルター機能に対して、ユー ザーが無効にしている場合にも、強制的に有効するための機能です。XSSと検知された 場合は、レスポンスのコンテンツ全体が「#」に置き換えられます。