サイバーセキュリティ演習 ― Webセキュリティ基礎&実践― 13. 総合演習(2) 講義内容 1. 2*. Webサイトの仕組みとWebプログラミング基礎 3.4.5*. 不正スクリプトの実行対策 6.7*. データベースの不正操作対策 8 *. システムの不正操作対策とHTTPレスポンスの改竄対策 9 *. 偽リクエストによるサービスの不正利用対策 10*. セッションIDの不正取得対策 11. 総合演習(1) 12*. 未公開ディレクトリの不正横断対策と認証認可制御の欠落 による不正アクセス対策とエラーメッセージからの情報 漏えい対策 13. 総合演習(2) 14. 総合演習(3) 15. 学期末試験 ※*はレポートがある回になります。 本日の内容 以下の脆弱性における検査の総合演習 クロスサイトスクリプティング(XSS) 認証制御や認可制御の欠落 SQLインジェクション OSコマンドインジェクション エラー情報の表示 クロスサイトスクリプティング (XSS) 攻撃者が悪意のあるスクリプトを脆弱性のあるWebサイトに 直接(格納型)または第三者のWebサイト(反射型)に埋め 込み、利用者がそのスクリプトを実行してしまう脆弱性 XSSの攻撃手口 HTMLの文法上特別な意味を持つ特殊文字がそのまま使 えることを利用して、スクリプトタグを入力フォームや URLに組み込む。 1. 脆弱性箇所を特定する。 入力フォームに<script>の文字を入れてみる。 脆弱性箇所となるURL上のパラメータ名を確認する。 2. 不正スクリプトを考える <script>alert(‘Hello’)</script> 3. 不正スクリプトを入力する 脆弱性のあるWebサイトの入力フォームなど(格納型) 認証制御や認可制御の欠落 認可制御が不適切であるため、アクセス権限のないユー ザ(攻撃者)にアクセスを許してしまい、情報漏えいを 招く脆弱性 情報 漏えい 情報 漏えい 認証制御や認可制御の攻撃手口 管理者用ページのURLを表示しないだけとしている箇所 を特定して、不正なパラメータをURLに組み込む。 1. 脆弱性箇所を特定する。 脆弱性箇所となるURL上のパラメータ名を確認する。 2. 不正なパラメータを含むURLを考える。 http://localhost/Web/Scenario124/VulSoft/bond.php?p age=11 3. 不正なパラメータを含むURLを入力し実行する 脆弱性WebサイトのURL欄など SQLインジェクション 悪意のあるSQLを注入(インジェクション) により、Webアプリケーションが意図しない SQL文を実行してしまうことで、データベー スを不正に操作されてしまう脆弱性 SQLインジェクションの攻撃手口 WHERE句の条件が必ずTRUE(真)になるようにSQL 文を変更する。 1. 脆弱性箇所を特定する。 入力フォームにシングルクォート(’)を入れてみる。 脆弱性箇所となるパラメータ名を確認する。 2. 不正な文字リテラルを考える。 SELECT * FROM user WHERE id = ‘yamada' AND password = ‘OR ‘A’=’A’ --'; 3. 不正な文字リテラルを入力フォームに入力し実行する ログイン画面の入力フォームなど OSコマンドインジェクション 悪意のあるOSコマンドを注入(インジェクション)し、 Webアプリケーションが意図しないOSコマンドを実行して しまうことで、システムを不正に操作されてしまう脆弱性 OSコマンドインジェクション の攻撃手口 一度に複数の機能を実行できるシェル機能を使って、 正規のOSコマンドに不正のOSコマンドを追加する 1. 脆弱性箇所を特定する。 入力フォームに&(アンパサンド)を入れてみる。 脆弱性箇所となる入力フォームを確認する。 2. 不正なOSコマンドを考える。 例: & dir /b c:\ 3. 不正なコマンドを入力し実行する 脆弱性Webサイトの入力フォームなど エラー情報の表示 エラーメッセージ出力を有効にしたままウェブサ イトを運用することで、ファイルやデータベース など、攻撃のきっかけとなる情報を悪意のある人 に与えてしまう脆弱性 エラー情報表示の攻撃手口 故意にエラーを発生させて、エラー情報より個人情報 を含んだファイルのパスを取得し、個人情報を閲覧す る 1. 脆弱性箇所を特定する。 入力フォームやURL上のパラメータに不適切な値を代入し、 エラーを発生させる。 例1:<sやシングルクォートなどの文字列入力による構文 エラー 例2:数値リテラルの部分に文字列を入力するなどのデー タ型不一致のエラー 演習テーマ 脆弱性検査 「ネット証券」のリンクをクリックしましょう。 演習の進め方 1. Webサイトの挙動を把握する 2. 脆弱性となる箇所を特定する 1.Webサイトの挙動を把握する ネット証券にログインし、 3つのメニューの挙動を確 認しましょう。 IDは「yamada」、パ スーワードは 「P@ssword」 ネット証券のメニュー。 口座残高表示 株式購入 持ち株確認 2.脆弱性となる箇所を特定する ネット証券には5つの脆弱性があります。 クロスサイトスクリプティング(XSS) 認証制御や認可制御の欠落 SQLインジェクション OSコマンドインジェクション エラー情報の表示 誰が最も早く脆弱性箇所を特定できるか競いましょう。 補足事項 「ネット証券に内在する脆弱性を発見しました。」が表示 されたらOKです。 OSコマンド・インジェクション攻撃の方法には、ネット ワークの疎通を確認するコマンドであるpingコマンドを使 用してください。 例えば、自分自身のIPアドレスに対してpingパケットを20回 送信するには、 「/windows/system32/ping 127.0.0.1 –n 20」と指定します。 「Hint」や「検査方法の例示および解説」は見ずに自力で 脆弱性を特定するように心がけましょう。 過去のパワーポイントの講義資料は見てもよいです。 口座残高表示 脆弱性を特定しましょう。 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分 株式購入 脆弱性を特定しましょう。 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分 持ち株確認 脆弱性を特定しましょう。 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分 お問い合わせ 脆弱性を特定しましょう。 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分 検査方法の例示および解説 ログインページ SQLインジェクション 口座残高表示 認証制御や認可制御の欠落 株式購入 クロスサイトスクリプティング(XSS) 持ち株確認 エラー情報の表示 お問い合わせ OSコマンドインジェクション ログインページ SQLインジェクション ログイン画面のログインID、 パスワード入力欄にそれぞ れ次の攻撃リクエストを入 力してみましょう。 ログインID「yamada」 パスワード「P@ssword’ and ‘a’=‘a」 パスワードに余分な条件が 付いていてもログインを許 可してしまいます。 口座残高表示 認証制御や認可制御の欠落 URLに下記の攻撃リクエスト を指定してアクセスしてみ ましょう。 http://localhost/Web/Sc enario129/VulSoft/bond. php?page=3&account_i d=1000003 画面に閲覧権限のない口座 の情報が表示されます。 株式購入 クロスサイトスクリプティ ング(XSS) 購入株数入力欄に下記の攻 撃リクエストを入力してみ ましょう。 <script>alert(document. cookie); </script> 画面にクッキー情報がア ラート表示されます。 持ち株確認 エラー情報の表示 URLに下記の攻撃リクエ ストを指定してアクセス してみましょう。 http://localhost/Web /Scenario129/VulSoft /bond.php?page=10 &account_id=aaa エラー情報の表示により エラーが発生したファイ ルの名前が表示されます。 お問い合わせ OSコマンドインジェク ション お問い合わせ内容入力欄に 下記の攻撃リクエストを入 力してみましょう。 &/windows/system32/pi ng 127.0.0.1 -n 20 メール送信処理に遅延が発 生します。 対策済み検査演習の挙動確認 「対策済み検査演習の挙動確認」のリンクにアクセ スし、脆弱性対策が施されていることを確認しま しょう。 SQLインジェクション 認証制御や認可制御の欠落 クロスサイトスクリプティング(XSS) エラー情報の表示 OSコマンドインジェクション ログインページ SQLインジェクション ログイン画面のログインID、 パスワード入力欄にそれぞ れ次の攻撃リクエストを入 力してみましょう。 ログインID「yamada」 パスワード「P@ssword’ and ‘a’=‘a」 パスワードに余分な条件が 付いていたらログインでき ないことを確認しましょう。 口座残高表示 認証制御や認可制御の欠落 URLに下記の攻撃リクエスト を指定してアクセスしてみ ましょう。 http://localhost/Web/Sc enario129/VulSoft/bond.s afe.php?page=3&accou nt_id=1000003 URLが少し違うので注意 権限のない口座情報が表示 されないことを確認しま しょう。 株式購入 クロスサイトスクリプティ ング(XSS) 購入株数入力欄に下記の攻 撃リクエストを入力してみ ましょう。 <script>alert(document. cookie); </script> エスケープ処理により通常 の文字列として表示され、 画面にクッキー情報がア ラート表示されないことを 確認しましょう。 持ち株確認 エラー情報の表示 URLに下記の攻撃リクエ ストを指定してアクセス してみましょう。 http://localhost/Web/ Scenario129/VulSoft/b ond.safe.php?page=1 0&account_id=aaa URLが少し違うので注意 エラー情報の表示により エラーが発生したファイ ルの名前が表示されない ことを確認しましょう。 お問い合わせ OSコマンドインジェク ション お問い合わせ内容入力欄に 下記の攻撃リクエストを入 力してみましょう。 &/windows/system32/pi ng 127.0.0.1 -n 20 メール送信処理に遅延が発 生しないことを確認しま しょう。 時間が余るようであれば、これまでのレ ポート課題をやりましょう。 https://moodle.artsci.kyushu-u.ac.jp/course/view.php?id=2661
© Copyright 2024 ExpyDoc