総合演習(3)

サイバーセキュリティ演習
― 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を取得する。
1. 脆弱性箇所を特定する。
ログイン前後のソースコードを確認してみる。
セッションIDの使いまわしや規則性を確認する。
例:name="session_id“ value=“123456789"
例:日+時+月+分+年+秒
ディレクトリトラバーサル
 攻撃者がディレクトリ(フォルダ)をトラバーサル
(横断)するパラメータを含んだURLのアクセスを実
行することで、通常はアクセスできないファイルや
ディレクトリの内容を取得されてしまう脆弱性
ディレクトリトラバーサルの攻
撃手口
 入力パラメータに相対パスを埋め込むことによって、
公開していないファイルの閲覧や取得を行う
1. 脆弱性箇所を特定する。
ファイル名やファイルパスを利用しているパラメータを確
認する。
2. 不正アクセスのパスを考える。
例: ../../../../../../../windows/win.ini
3. 不正アクセスのパスを含むURLを入力し実行する
脆弱性WebサイトのURL欄など
HTTPヘッダインジェクション
 悪意のあるHTTPヘッダの注入(インジェクショ
ン)により、HTTPヘッダの内容が変更された意図
しないHTTP通信が実行されてしまう脆弱性
HTTPヘッダインジェクション
の攻撃手口
 改行コードと不正のHTTPヘッダを注入し、Cookieの
値を書き換えることにより、ユーザになりすまし不正
行為を行う
1. 脆弱性箇所を特定する。
URLやソースコード、パケットキャプチャツールから
Cookie値やパラメータ名を確認する。
2. 不正なHTTPヘッダを含むURLを考える。
http://localhost/Web/Scenario121/VulSoft/shop.php?
page=2&login_id=yamada&password=P@ssword&url=
welcome.php%0DSet-Cookie:+PHPSESSID=attackID
3. 不正なHTTPヘッダを含むURLを入力し実行する
脆弱性Webサイトの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. 不正な数値リテラルを含むURLを考える。
http://localhost/Web/Scenario109/VulSoft/bank.php?pa
ge=3&account_id=1 OR 1=1;
3. 不正な数値リテラルを含むURLを入力し実行する
脆弱性WebサイトのURL欄など
演習テーマ
脆弱性検査
 「ネットショッピング」のリンクをクリックしましょ
う。
演習の進め方
1. Webサイトの挙動を把握する
2. 脆弱性となる箇所を特定する
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分
検査方法の例示および解説
 ログインページ
 セッション管理の不備
 商品一覧
 ディレクトリトラバーサル
 購入
 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%0DSetCookie: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%0DSetCookie: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室
 試験内容:
四者択一問題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