サイバーセキュリティ演習
― Webセキュリティ基礎&実践―
11. 総合演習(1)
講義内容
1. 2*. Webサイトの仕組みとWebプログラミング基礎
3.4.5*. 不正スクリプトの実行対策
6.7*.
データベースの不正操作対策
8 *.
システムの不正操作対策とHTTPレスポンスの改竄対策
9 *.
偽リクエストによるサービスの不正利用対策
10*.
セッションIDの不正取得対策
11.
総合演習(1)
12*.
公開ディレクトリの不正横断対策と認証認可制御の欠落
による不正アクセス対策とエラーメッセージからの情報
漏えい対策
13.
総合演習(2)
14.
総合演習(3)
15.
学期末試験
※*はレポートがある回になります。
本日の内容
以下の脆弱性における検査の総合演習
クロスサイトスクリプティング(XSS)
SQLインジェクション
クロスサイトリクエストフォージェリ
(CSRF)
OSコマンドインジェクション
セッションの管理不備
クロスサイトスクリプティング
(XSS)
攻撃者が悪意のあるスクリプトを脆弱性のあるWebサイトに
直接(格納型)または第三者のWebサイト(反射型)に埋め
込み、利用者がそのスクリプトを実行してしまう脆弱性
XSSの攻撃手口
HTMLの文法上特別な意味を持つ特殊文字がそのまま使
えることを利用して、スクリプトタグを入力フォームや
URLに組み込む。
1. 脆弱性箇所を特定する。
入力フォームに<script>の文字を入れてみる。
脆弱性箇所となるURL上のパラメータ名を確認する。
2. 不正スクリプトおよび罠のURLを考える
http://localhost/Web/Scenario102/VulSoft/enquete.ph
p?page=2&sex=0&old=1&company=&xss=1&trouble=1
&content=&name= <script>alert(‘Hello’)</script>
3. 不正スクリプトや罠のURLを投稿する
脆弱性のあるWebサイトの入力フォームなど(格納型)
第三者のWebサイトである掲示板のURL欄など(反射型)
SQLインジェクション
悪意のあるSQLを注入(インジェクション)
により、Webアプリケーションが意図しない
SQL文を実行してしまうことで、データベー
スを不正に操作されてしまう脆弱性
SQLインジェクションの攻撃手口
WHERE句の条件が必ずTRUE(真)になるようにSQL
文を変更する。
1. 脆弱性箇所を特定する。
URL上のパラメータにシングルクォート(’)を入れてみる。
脆弱性箇所となるURL上のパラメータ名を確認する。
2. 不正なリテラルを含むURLを考える。
http://localhost/Web/Scenario108/VulSoft/bank.php?pa
ge=2&id=yamada&password=‘ or ‘a’=‘a’ --
3. 不正なリテラルを含むURLを入力し実行する
脆弱性WebサイトのURL欄など
クロスサイトリクエストフォー
ジェリ(CSRF)
攻撃者が第三者のWebサイトに悪意のあるリクエストを
埋め込み、脆弱性のあるWebサイトにログイン中の利用
者にそのリクエストを実行させるサイト横断型の脆弱性
CSRFの攻撃手口
正規のリクエストを識別する仕組みが無い箇所を特定し
て、不正なパラメータをURLに組み込む。
1. 脆弱性箇所を特定する。
トークンが利用されていない箇所を探す。
脆弱性箇所となるURL上のパラメータ名を確認する。
2. 不正なパラメータを含むURLを考える。
http://localhost/Web/Scenario113/VulSoft/sns.php?pag
e=4&public=1
3. 不正なパラメータを含むURLを第三者のWebサイトに投
稿する
掲示板のURL欄など
OSコマンドインジェクション
悪意のあるOSコマンドを注入(インジェクション)し、
Webアプリケーションが意図しないOSコマンドを実行して
しまうことで、システムを不正に操作されてしまう脆弱性
OSコマンドインジェクション
の攻撃手口
一度に複数の機能を実行できるシェル機能を使って、
正規のOSコマンドに不正のOSコマンドを追加する
1. 脆弱性箇所を特定する。
入力フォームに&(アンパサンド)を入れてみる。
脆弱性箇所となる入力フォームを確認する。
2. 不正なOSコマンドを考える。
例: & dir /b c:\
3. 不正なコマンドを入力し実行する
脆弱性Webサイトの入力フォームなど
セッションの管理不備
セッションIDが規則性を有するため、推測されてし
まう脆弱性
セッションID推測の攻撃手口
ログインを繰り返しセッションIDの規則性を推測する
1. 脆弱性箇所を特定する。
ログインを繰り返す。
ソースコードのセッションIDの変化・規則性を確認する。
例:日+時+月+分+年+秒
演習テーマ
脆弱性検査
「グループウェア」のリンクをクリックしましょう。
演習の進め方
1. Webサイトの挙動を把握する
2. 脆弱性となる箇所を特定する
1.Webサイトの挙動を把握する
グループウェアにログイン
し、4つのメニューの挙動
を確認しましょう。
IDは「yamada」、パ
スーワードは
「P@ssword」
グループウェアのメニュー。
会議室予約
スケジュール管理
メールフォーム
休暇申請
2.脆弱性となる箇所を特定する
グループウェアには5つの脆弱性があります。
クロスサイトスクリプティング(XSS)
SQLインジェクション
クロスサイトリクエストフォージェリ(CSRF)
OSコマンドインジェクション
セッションの管理不備
誰が最も早く脆弱性箇所を特定できるか競いましょう。
なお、セッションの管理不備に関しては四者一択の演
習問題になります。
補足事項
「グループウェアに内在する脆弱性を発見しました。」が
表示されたらOKです。
OSコマンド・インジェクション攻撃の方法には、ネット
ワークの疎通を確認するコマンドであるpingコマンドを使
用してください。
例えば、自分自身のIPアドレスに対してpingパケットを20回
送信するには、
「/windows/system32/ping 127.0.0.1 –n 20」と指定します。
「Hint」や「検査方法の例示および解説」は見ずに自力で
脆弱性を特定するように心がけましょう。
過去のパワーポイントの講義資料は見てもよいです。
まずは、セッション管理不備の
演習問題を解きましょう
会議室予約
脆弱性を特定しましょう。
脆弱性の種類は何でしょ
うか?
脆弱性の箇所はどこで
しょうか?
制限時間10分
スケジュール管理
脆弱性を特定しましょう。
脆弱性の種類は何でしょ
うか?
脆弱性の箇所はどこで
しょうか?
制限時間10分
メールフォーム
脆弱性を特定しましょう。
脆弱性の種類は何でしょ
うか?
脆弱性の箇所はどこで
しょうか?
制限時間10分
休暇申請
脆弱性を特定しましょう。
脆弱性の種類は何でしょ
うか?
脆弱性の箇所はどこで
しょうか?
制限時間10分
検査方法の例示および解説
ログインページ
セッションの管理不備
会議室予約
クロスサイトスクリプティング(XSS)
スケジュール管理
SQLインジェクション
メールフォーム
OSコマンドインジェクション
休暇申請
クロスサイトリクエストフォージェリ(CSRF)
ログインページ
セッション管理の不備
ログイン後に遷移するグ
ループウェアメニュー画面
のソースを表示してみま
しょう。
<input type="hidden"
name="session_id"
value="セッションID" />
ログインの繰り返しにより、
セッションIDの規則性が分
かります。
ユーザID + ログインした
年月日時分秒を反転した値
会議室予約
XSS(格納型)
タイトルの入力欄に下記の
スクリプトを入力して会議
室予約を登録してみましょ
う。
<script>alert("test");</scri
pt>
会議室予約画面へアクセス
するたびにアラートが表示
されるようになります。
スケジュール管理
SQLインジェクション
URL欄に下記の不正リテラ
ルを含むURLを指定してア
クセスしてみましょう。
http://localhost/Web/Sc
enario131/VulSoft/group
ware.php?page=4&dat
e=2015/12/11' or 'a'='a
他のユーザや日付のスケ
ジュールが表示されます。
メールフォーム
OSコマンドインジェク
ション
メール作成時の件名入力欄
に下記の不正OSコマンド
を追記してメールを送信し
てみましょう。
&/windows/system32/pi
ng 127.0.0.1 -n 20
メール送信処理に遅延
が発生します。
休暇申請
CSRF
掲示板のURL欄に下記の
不正リクエストを含む
URLを投稿し、リンクか
らアクセスをしてみま
しょう。
http://localhost/Web
/Scenario131/VulSoft
/groupware.php?pa
ge=8&holiday_id=1&
delete
意図しない休暇申請情
報の削除が行われます。
対策済み検査演習の挙動確認
「対策済み検査演習の挙動確認」のリンクにアクセ
スし、脆弱性対策が施されていることを確認しま
しょう。
セッションの管理不備
クロスサイトスクリプティング(XSS)
SQLインジェクション
OSコマンドインジェクション
クロスサイトリクエストフォージェリ(CSRF)
ログインページ
セッション管理の不備
ログイン後に遷移するグ
ループウェアメニュー画面
のソースを表示してみま
しょう。
<input type="hidden"
name="session_id"
value="セッションID" />
疑似乱数になっていること
を確認しましょう。
会議室予約
XSS(格納型)
タイトルの入力欄に下記の
スクリプトを入力して会議
室予約を登録してみましょ
う。
<script>alert("test");</scri
pt>
エスケープ処理により通常
の文字列として表示される
ことを確認しましょう。
スケジュール管理
SQLインジェクション
URL欄に下記の不正リテラ
ルを含むURLを指定してア
クセスしてみましょう。
http://localhost/Web/Sc
enario131/VulSoft/group
ware.safe.php?page=4
&date=2015/12/11' or
'a'='a
URLが少し違うので注意
他のユーザや日付のスケ
ジュールが表示されない
ことを確認しましょう。
メールフォーム
OSコマンドインジェク
ション
メール作成時の件名入力欄
に下記の不正OSコマンド
を追記してメールを送信し
てみましょう。
&/windows/system32/pi
ng 127.0.0.1 -n 20
メール送信処理に遅延
が発生しないことを確
認しましょう。
休暇申請
CSRF
掲示板のURL欄に下記の不
正リクエストを含むURLを
投稿し、リンクからアク
セスをしてみましょう。
http://localhost/Web/S
cenario131/VulSoft/gr
oupware.safe.php?pa
ge=8&holiday_id=1&d
elete
URLが少し違うので注意
休暇申請情報の削除が行
われないことを確認しま
しょう。
時間が余るようであれば、これまでのレ
ポート課題をやりましょう。
https://moodle.artsci.kyushu-u.ac.jp/course/view.php?id=2661
© Copyright 2026 ExpyDoc