サイバーセキュリティ演習 ― Webセキュリティ基礎&実践― 14. 総合演習(3)
講義内容 1. 2*. Webサイトの仕組みとWebプログラミング基礎 3.4.5*. 不正スクリプトの実行対策 6.7*. データベースの不正操作対策 8*. システムの不正操作対策とHTTPレスポンスの改竄対策 9*. 偽リクエストによるサービスの不正利用対策 10*. セッションIDの 不正取得対策 11. 総合演習(1) 12*. 未公開ディレクトリの不正横断対策と認証認可制御の欠落 による不正アクセス対策とエラーメッセージからの情報 漏えい対策 13. 総合演習(2) 14. 総合演習(3) 15. 学期末試験 ※*はレポートがある回になります。
本日の内容 以下の脆弱性における検査の総合演習 授業アンケート 学期末試験の案内・体験版試行 セッション管理の不備 ディレクトリトラバーサル HTTPヘッダインジェクション 認証制御や認可制御の欠落 SQLインジェクション 授業アンケート 学期末試験の案内・体験版試行
セッション管理の不備 ログイン中の利用者のセッションIDを不正に取得されて しまう脆弱性
セッション管理不備の攻撃手口 ネットワークの盗聴、ソースコードの閲覧、セッション IDの推測などにより、ログイン前後でセッションIDの使 いまわしや規則性を特定してセッションIDを取得する。 脆弱性箇所を特定する。 ログイン前後のソースコードを確認してみる。 セッションIDの使いまわしや規則性を確認する。 例:name="session_id“ value=“123456789" 例:日+時+月+分+年+秒
ディレクトリトラバーサル 攻撃者がディレクトリ(フォルダ)をトラバーサル (横断)するパラメータを含んだURLのアクセスを実 行することで、通常はアクセスできないファイルや ディレクトリの内容を取得されてしまう脆弱性
ディレクトリトラバーサルの攻撃手口 入力パラメータに相対パスを埋め込むことによって、 公開していないファイルの閲覧や取得を行う 脆弱性箇所を特定する。 ファイル名やファイルパスを利用しているパラメータを確 認する。 不正アクセスのパスを考える。 例: ../../../../../../../windows/win.ini 不正アクセスのパスを含むURLを入力し実行する 脆弱性WebサイトのURL欄など
HTTPヘッダインジェクション 悪意のあるHTTPヘッダの注入(インジェクショ ン)により、HTTPヘッダの内容が変更された意図 しないHTTP通信が実行されてしまう脆弱性
HTTPヘッダインジェクションの攻撃手口 改行コードと不正のHTTPヘッダを注入し、Cookieの 値を書き換えることにより、ユーザになりすまし不正 行為を行う 脆弱性箇所を特定する。 URLやソースコード、パケットキャプチャツールから Cookie値やパラメータ名を確認する。 不正なHTTPヘッダを含むURLを考える。 http://localhost/Web/Scenario121/VulSoft/shop.php? page=2&login_id=yamada&password=P@ssword&url= welcome.php%0DSet-Cookie:+PHPSESSID=attackID 不正なHTTPヘッダを含むURLを入力し実行する 脆弱性WebサイトのURL欄など
認証制御や認可制御の欠落 認可制御が不適切であるため、アクセス権限のないユー ザ(攻撃者)にアクセスを許してしまい、情報漏えいを 招く脆弱性
認証制御や認可制御の攻撃手口 未ログインの状態でもアクセス可能なページや一般ユー ザでもアクセス可能な管理者用ページを特定して、不正 アクセスする。 脆弱性箇所を特定する。 脆弱性箇所となるURL上のパラメータ名を確認する。 不正なパラメータを含むURLを考える。 http://localhost/Web/Scenario124/VulSoft/bond.php?p age=11 不正なパラメータを含むURLを入力し実行する 脆弱性WebサイトのURL欄など
SQLインジェクション 悪意のあるSQLを注入(インジェクション) により、Webアプリケーションが意図しない SQL文を実行してしまうことで、データベー スを不正に操作されてしまう脆弱性
SQLインジェクションの攻撃手口 WHERE句の条件が必ずTRUE(真)になるようにSQL 文を変更する。 脆弱性箇所を特定する。 脆弱性箇所となるパラメータ名を確認する。 脆弱性箇所のパラメータにシングルクォート(’)を入れてみ る。 不正な数値リテラルを含むURLを考える。 http://localhost/Web/Scenario109/VulSoft/bank.php?pa ge=3&account_id=1 OR 1=1; 不正な数値リテラルを含むURLを入力し実行する 脆弱性WebサイトのURL欄など
演習テーマ 脆弱性検査 「ネットショッピング」のリンクをクリックしましょ う。
演習の進め方 Webサイトの挙動を把握する 脆弱性となる箇所を特定する
1.Webサイトの挙動を把握する ネットショッピングにログ インし、挙動を確認しま しょう。 一般ユーザのIDは 「yamada」、パスー ワードは「P@ssword」 管理者ユーザのIDは 「suzuki」、パスーワード は「Administr@tor」
2.脆弱性となる箇所を特定する ネットショッピングには6つの脆弱性があります。 誰が最も早く脆弱性箇所を特定できるか競いましょう。 セッション管理の不備 ディレクトリトラバーサル HTTPヘッダインジェクション 認証制御や認可制御の欠落 SQLインジェクション 誰が最も早く脆弱性箇所を特定できるか競いましょう。 なお、セッションの管理不備に関しては四者一択の演 習問題になります。
補足事項(1) 「ネットショッピングに内在する脆弱性を発見しまし た。」が表示されたらOKです。 ディレクトリトラバーサル攻撃では、以下のファイル パスを指定してください。 file_name = ../catalog/catalog_1000005.pdf
補足事項(2) HTTPヘッダインジェクション攻撃では、以下のクッ キー名とクッキー値を指定して変更するようにしてく ださい。 Set-Cookie:netsshoping=test また、HTTPヘッダインジェクション攻撃で指定する tokenパラメータには、HTMLソースに表示される name=“token”のINPUT要素のvalue値と同じ値を指 定してください。 token=<トークンをここに埋め込む> 「Hint」や「検査方法の例示および解説」は見ずに自 力で脆弱性を特定するように心がけましょう。 過去のパワーポイントの講義資料は見てもよいです。
まずは、セッション管理不備の演習問題を解きましょう
商品一覧 脆弱性を特定しましょう。 ソースコードから該当す るパラメータを確認しま しょう。 制限時間10分 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分
購入 脆弱性を特定しましょう。 ソースコードから該当す るパラメータを確認しま しょう。 制限時間10分 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分
カタログ情報 脆弱性を特定しましょう。 ソースコードから該当す るパラメータを確認しま しょう。 制限時間10分 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分
履歴 脆弱性を特定しましょう。 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分
ユーザ管理・商品管理 脆弱性を特定しましょう。 脆弱性の種類は何でしょ うか? 脆弱性の箇所はどこで しょうか? 制限時間10分
検査方法の例示および解説 ログインページ 商品一覧 購入 カタログ情報 履歴 ユーザ管理・商品管理 セッション管理の不備 ディレクトリトラバーサル 購入 HTTPヘッダインジェクション カタログ情報 認証制御や認可制御の欠落 履歴 SQLインジェクション ユーザ管理・商品管理
ログインページ セッション管理の不備 ログイン前後に各画面の ソースを表示してみましょ う。 <input type="hidden" name="session_id" value="セッションID" /> ログイン前後のセッション IDを比較することにより、 ログイン前後でセッション IDが同じことが分かります。
商品一覧 ディレクトリトラバーサル URLに下記の攻撃リクエスト を指定してアクセスしてみ ましょう。 http://localhost/Web/Sc enario130/VulSoft/netsho pping.php?page=12&file _name=../catalog/catal og_1000005.pdf 別のフォルダに存在するカ タログファイルがダウン ロードできます。
購入 HTTPヘッダインジェクション URLに下記の攻撃リクエストを 指定してアクセスしてみま しょう。 クッキー情報が保存されます。 http://localhost/Web/Scen ario130/VulSoft/netshoppin g.php?page=5&token=??? &goods_id=1000015&comp lete_url=netshopping.php? page=14%0DSet- Cookie:netsshoping=test&p assword=P@ssword クッキー情報が保存されます。
カタログ情報 認証制御や認可制御の欠落 未ログインの状態で、URL に下記の攻撃リクエストを 指定してアクセスしてみま しょう。 http://localhost/Web/S cenario130/VulSoft/nets hopping.php?page=6 未ログイン状態でもカタロ グのダウンロード画面へア クセスすることができます。
履歴 SQLインジェクション URLに下記の攻撃リクエス トを指定してアクセスして みましょう。 http://localhost/Web/S cenario130/VulSoft/nets hopping.php?page=7& history_id=10000003 or 1=1 ログインユーザ以外の買い 物履歴も表示されます。
ユーザ管理・商品管理 認証制御や認可制御の欠落 URLに下記の攻撃リクエス トを指定してアクセスして みましょう。 http://localhost/Web/S cenario130/VulSoft/nets hopping.php?page=10 一般ユーザでも管理者用 ページへアクセスすること ができます。
対策済み検査演習の挙動確認 「対策済み検査演習の挙動確認」のリンクにアクセ スし、脆弱性対策が施されていることを確認しま しょう。 ディレクトリトラバーサル HTTPヘッダインジェクション 認証制御や認可制御の欠落 SQLインジェクション
商品一覧 ディレクトリトラバーサル URLに下記の攻撃リクエスト を指定してアクセスしてみ ましょう。 http://localhost/Web/Sc enario130/VulSoft/netsho pping.safe.php?page=1 2&file_name=../catalog/ catalog_1000005.pdf URLが少し違うので注意 別フォルダに存在するカタ ログがダウンロードできな いことを確認しましょう。
購入 HTTPヘッダインジェクション URLに下記の攻撃リクエストを 指定してアクセスしてみま しょう。 http://localhost/Web/Scen ario130/VulSoft/netshoppin g.safe.php?page=5&token =???&goods_id=1000015& complete_url=netshopping. safe.php?page=14%0DSet- Cookie:netsshoping=test&p assword=P@ssword URLが少し違うので注意 クッキー情報が新規で保存さ れていないことを確認しま しょう。
カタログ情報 認証制御や認可制御の欠落 未ログインの状態で、URL に下記の攻撃リクエストを 指定してアクセスしてみま しょう。 http://localhost/Web/S cenario130/VulSoft/nets hopping.safe.php?pag e=6 URLが少し違うので注意 未ログイン状態ではカタロ グのダウンロード画面へア クセスすることができない ことを確認しましょう。
履歴 SQLインジェクション URLに下記の攻撃リクエス トを指定してアクセスして みましょう。 http://localhost/Web/S cenario130/VulSoft/nets hopping.safe.php?pag e=7&history_id=1000000 3 or 1=1 URLが少し違うので注意 ログインユーザ以外の買い 物履歴が表示されないこと を確認しましょう。
ユーザ管理・商品管理 認証制御や認可制御の欠落 URLに下記の攻撃リクエス トを指定してアクセスして みましょう。 http://localhost/Web/S cenario130/VulSoft/nets hopping.safe.php?pag e=10 URLが少し違うので注意 一般ユーザでは管理者用 ページへアクセスできない ことを確認しましょう。
授業アンケートについて 15分程、授業アンケートにご協力ください。 このアンケートは、皆さんの授業の振り返り、授 業やカリキュラムの改善等を目的として実施され るものです。回答いただいたデータ・意見は、授 業の改善に役立てるとともに、今後の基幹教育カ リキュラムの参考にさせていただきます。板書し た「授業クラスコード」を必ず記入してから質問 事項に答えてください。 なお、記入後のアンケート用紙は、授業中に回収 しますので、回答してください。記入済みのアン ケートは、指名した学生さんが回収しますので、 提出に協力してください。
学期末試験について 実施日: 2016年2月3日(水) 実施時間: 8:40~10:10(1限) 実施場所: センター1号館 1501室 実施日: 2016年2月3日(水) 実施時間: 8:40~10:10(1限) 実施場所: センター1号館 1501室 試験内容: 四者択一問題30問 (moodle上で行います。) 注意事項: 試験には、ネットに接続した パソコンが必要です。 体験版(3問)を用意しましたので、実施 してみましょう。 https://moodle.artsci.kyushu-u.ac.jp/course/view.php?id=2661
時間が余るようであれば、これまでのレ ポート課題をやりましょう。 全ての課題は2月3日までに Moodle で提 出して下さい。以降提出されたものは、評 価に反映されません。 https://moodle.artsci.kyushu-u.ac.jp/course/view.php?id=2661