WebGoatを用いるためのセットアップ
WebGoatを用いるにあたり,下のツールをPCに入れます.ここでは,下記のツールをWindowsでセットアップする方法について纏めます.
- Oracle VM VirtualBox
Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle - 7-Zip
圧縮・解凍ソフト 7-Zip - OWASP BWA
OWASP Broken Web Applications Project - Browse Files at SourceForge.net - firefox
Firefox をダウンロード — 自由なウェブブラウザー — Mozilla - Tamper Data
Tamper Data :: Add-ons for Firefox
Oracle VM VirtualBox
- 上のリストにあるサイトから赤枠をクリックして最新版をダウンロードします.
- 「実行」をクリックします.
- VirtualBoxセットアップウィザードが立ち上がるので「Next」をクリックします.
- 「Next」をクリックします.
- 「Next」をクリックします.
- 「Yes」をクリックします.
- インストールが行われるのでしばらく待ちます.
- 「インストール」をクリックします.
- 「finish」をクリックして終わります.
7-Zip
- 上のリストにあるサイトから赤枠をクリックして最新版をダウンロードします.
-
「install」をクリックします.
- ポップアップが表示されるので,「実行」をクリックします.処理が終わればインスト―ル終了です.
OWASP Broken Web Applications Project
- 上のリストにあるサイトにアクセスして,赤枠をクリックして最新版をダウンロードします.
- ダウンロード中は下のように表示されます.
Firefox
- 上のリンクからサイトから赤枠をクリックして最新版をダウンロードします.
- 「インストール」をクリックします.
- ダウンロードが始まるのでしばらく待ちます.処理が終わればダウンロードが終了です.
Tamper Data
- Firefoxから上のリストにあるサイトにアクセスして,赤枠をクリックして最新版をダウンロードします.
- ポップアップにある「インストール」をクリックします.
-
インストールが終わったら「今すぐ再起動」をクリックして,Tamper Dataの設定は終了です.
ペンテスト手法 #01
ここでは,SQLインジェクションが可能か否かをテストするための方法について纏めます.
- sqlmap
sqlmap: automatic SQL injection and database takeover tool
データベースを扱うwebアプリでのペンテストに有用なツール.Python2系で書かれています.
※使い方参考: sqlmapを使ってみる - ももいろテクノロジー
Firefox Tamper Dataの使い方
(書きかけ)
WebGoatを用いたクロスサイトスクリプティング #02
前回に引き続き,「LAB: Cross Site Scripting」の問題を取り扱います.
Stage5: Reflected XSS
Reflected XSS(反射型XSS)とは,webアプリにあるフォームにスクリプトを書き込み,Webアプリを経由して他の人に予期しないデータを送らせる攻撃.正常な動作がしなくなるようなスクリプトを検索フォーム等に書き込む,という手法が採られる.スクリプトを入力した瞬間だけ効果が表れる.
問題
ステージ5では,Reflected XSSを用いて,他のユーザーを攻撃リンクにアクセスさせることが目標です.今回は,攻撃者を「Larry Stooge」とします.また,攻撃にはスタッフを検索するためのフォーム(SearchStaff)を用いてURLを作成してください.
解答
- Larryとしてログインします.パスワードは「larry」です.
- Goat Hills Financial Human Resourcesのスタッフを検索するフォームを見るために,「SearchStaff」ボタンをクリックします.
- 表示された検索フォームに,
"><script>alert("bomb!")</script>
を入力し,「FindProfile」ボタンをクリックします.
- 「bomb!」と表示されるので,「OK」ボタンを押します.
- 「You have completed Stage 5: Reflected XSS」と表示されていたら,ステージ5はクリアです!
WebGoatを用いたクロスサイトスクリプティング #01
クロスサイトスクリプティングとは
今回は,「SQLインジェクション」に引き続き「クロスサイトスクリプティング」をテーマに問題を解いていきます.
クロスサイトスクリプティング(Cross-Site Scripting/XSS)とは,動的Webページが情報処理を行う際に,意図しないスクリプトを混入させて予期しない表示や動作を行わせる攻撃.
LAB: Cross Site Scripting
初めに「LAB: Cross Site Scripting」を解きます.「SQLインジェクション」の際と同様にOracle VM VirtualBoxを開き,OWASP-bwaを起動します.ポップアップが出てくるので,IPアドレスを確認します.その内容をブラウザ(firefox)に入力して,OWASP BWAのページが開けたらOWASP WebGoatを選択します.WebGoatのページの目次から,「Cross-Site Scripting(XSS)」の中の「LAB: Cross Site Scripting」を開きましょう.詳細はリンクを参照してください.この問題は全部で4つのステージで構成されています.今回は例題として,Stage1及びStage5を扱います.
- stage1: Stored XSS
- stage2: Block Stored XSS using Input Validation
- stage3: Stored XSS Revisited
- stage4: Block Stored XSS using Output Validation
- stage5: Reflected XSS
- stage6: Blocked Reflected XSS
Stage1
Stored XSS(蓄積型XSS)とは,元のWebサイトが持っている情報や入力フォームを活用した攻撃.正常な動作をしなくなるようなスクリプトを,入力フォーム等に書き込む,という手法が採られる.
問題
ステージ1では,Stored XSSを用いて,「Jerry」のプロフィールに書かれている住所の「Street」の入力フィールドを書き換えることが目標です.攻撃者はTomと仮定します.また,各アカウントのパスワードは,ユーザーの名前(ファーストネーム)を小文字にしたものです.
解答
Stored XSS
- Tomのアカウントに入ります.パスワードは「tom」です.
- Tomのプロフィール情報を見るために「ViewProfile」ボタンをクリックします.
- Tomのプロフィール情報のうち「Street」の欄を編集するために,「EditProfile」ボタンをクリックします.
- プロフィールを開くと下のようになっていることを確認します.
-
住所(Street)の入力フィールドに
"><script>alert("bomb!")</script>
を書き加えます. -
住所(Street)の入力フィールドに書き加え終わったら,プロフィール設定をアップデートするために,「UpdateProfile」ボタンをクリックします.
-
プロフィールをアップデートすると,下のような「bomb!」と書かれたポップアップが表示されるので「OK」を押します.
-
プロフィールをアップデートしたら,Tomのアカウントからログアウトするために「Logout」ボタンをクリックします.
Stored XSSが成功したかの確認
- 確認として,Jerry Mouseのアカウントに入ります.パスワードは「jerry」です.
- Jerryのアカウントに入れたら,Tomのプロフィールを見るために「ViewProfile」のボタンをクリックしてみます.
- 下のように「bomb!」と表示されればStage1はクリアです.
WebGoatを用いたクロスサイトスクリプティング #03
演習: Phishing with XSS
最後に,WebGoatの「Phishing with XSS」を解きます.「Phishing with XSS」では,どのようにフィッシングが行われるのかを学ぶことができます.
フィッシング(Phishing)とは,金融機関などを騙ったWebサイトやメールによって,そのユーザIDやパスワードなどを入力させ,盗み出そうとする詐欺のことです. (セコムトラストシステムズ BCP用語辞典より引用)
これらのユーザIDやパスワードは「クレデンシャル情報」と呼ばれます.
この問題での目標は,XSSとHTMLの挿入によって,下の3つを達成することです.
- クレデンシャル情報を入力することができるようなHTMLを挿入すること
- クレジデンシャル情報を修正できるようにするためのjavascriptを加えること.
- クレジデンシャル情報を http://localhost/webgoat/catcher?PROPERTY=yes...にポストすること.
考え方