WebGoatを用いるためのセットアップ

WebGoatを用いるにあたり,下のツールをPCに入れます.ここでは,下記のツールをWindowsでセットアップする方法について纏めます.

Oracle VM VirtualBox

  1. 上のリストにあるサイトから赤枠をクリックして最新版をダウンロードします.

    f:id:y-cubed:20170616194432p:plain

  2. 「実行」をクリックします.

    f:id:y-cubed:20170616194558p:plain

  3. VirtualBoxセットアップウィザードが立ち上がるので「Next」をクリックします.

    f:id:y-cubed:20170616195101p:plain

  4. 「Next」をクリックします.

    f:id:y-cubed:20170616195446p:plain

  5. 「Next」をクリックします.

    f:id:y-cubed:20170616195805p:plain

  6. 「Yes」をクリックします.

    f:id:y-cubed:20170616200327p:plain

  7. インストールが行われるのでしばらく待ちます.

    f:id:y-cubed:20170616200543p:plain

  8. 「インストール」をクリックします.

    f:id:y-cubed:20170616200848p:plain

  9. 「finish」をクリックして終わります.

    f:id:y-cubed:20170616201049p:plain

7-Zip

  1. 上のリストにあるサイトから赤枠をクリックして最新版をダウンロードします.

    f:id:y-cubed:20170616184837p:plain

  2. 「install」をクリックします.
    f:id:y-cubed:20170616185050p:plain

  3. ポップアップが表示されるので,「実行」をクリックします.処理が終わればインスト―ル終了です.

    f:id:y-cubed:20170616185548p:plain

OWASP Broken Web Applications Project

  1.  上のリストにあるサイトにアクセスして,赤枠をクリックして最新版をダウンロードします.

    f:id:y-cubed:20170616184155p:plain

  2. ダウンロード中は下のように表示されます.

    f:id:y-cubed:20170616184505p:plain

 

Firefox

  1.  上のリンクからサイトから赤枠をクリックして最新版をダウンロードします.

    f:id:y-cubed:20170616201735p:plain

  2. 「インストール」をクリックします.

    f:id:y-cubed:20170616204314p:plain

  3. ダウンロードが始まるのでしばらく待ちます.処理が終わればダウンロードが終了です.

    f:id:y-cubed:20170616204435p:plain

Tamper Data

  1. Firefoxから上のリストにあるサイトにアクセスして,赤枠をクリックして最新版をダウンロードします.

    f:id:y-cubed:20170616205710p:plain

  2. ポップアップにある「インストール」をクリックします.

    f:id:y-cubed:20170616205922p:plain

  3. インストールが終わったら「今すぐ再起動」をクリックして,Tamper Dataの設定は終了です.
    f:id:y-cubed:20170616210120p:plain

 

 

ペンテスト手法 #01

 ここでは,SQLインジェクションが可能か否かをテストするための方法について纏めます.

 

WebGoatを用いたクロスサイトスクリプティング #04

まとめ

 #01~03では,XSSの概要紹介と例題演習の内容を纏めました.興味があれば,WebGoatの他のXSSも解いてみましょう.それらを終えて余力があれば,ヒントのついているXSS Gameにも取り組んでみてください.

参考資料

 興味があれば,XSSの攻撃手法がまとめられた下のようなチートシートに目を通しながら,オンラインCTFの場で実践してみましょう(CTF以外の場で実践するのは法に抵触する場合があるのでお勧めしません).

 

WebGoatを用いたクロスサイトスクリプティング #02

前回に引き続き,「LAB: Cross Site Scripting」の問題を取り扱います.

Stage5: Reflected XSS

Reflected XSS(反射型XSS)とは,webアプリにあるフォームにスクリプトを書き込み,Webアプリを経由して他の人に予期しないデータを送らせる攻撃.正常な動作がしなくなるようなスクリプトを検索フォーム等に書き込む,という手法が採られる.スクリプトを入力した瞬間だけ効果が表れる.

問題

 ステージ5では,Reflected XSSを用いて,他のユーザーを攻撃リンクにアクセスさせることが目標です.今回は,攻撃者を「Larry Stooge」とします.また,攻撃にはスタッフを検索するためのフォーム(SearchStaff)を用いてURLを作成してください.

解答

  1. Larryとしてログインします.パスワードは「larry」です.

    f:id:y-cubed:20170612213349p:plain

  2. Goat Hills Financial Human Resourcesのスタッフを検索するフォームを見るために,「SearchStaff」ボタンをクリックします.

    f:id:y-cubed:20170612213711p:plain

  3. 表示された検索フォームに,
     "><script>alert("bomb!")</script>
    を入力し,「FindProfile」ボタンをクリックします.

    f:id:y-cubed:20170612214305p:plain

  4. 「bomb!」と表示されるので,「OK」ボタンを押します.

    f:id:y-cubed:20170612214556p:plain

  5. 「You have completed Stage 5: Reflected XSS」と表示されていたら,ステージ5はクリアです!

    f:id:y-cubed:20170612214812p:plain

 

 

 

 

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

  1. Tomのアカウントに入ります.パスワードは「tom」です.

    f:id:y-cubed:20170612205640p:plain

  2. Tomのプロフィール情報を見るために「ViewProfile」ボタンをクリックします.

    f:id:y-cubed:20170612205424p:plain

  3. Tomのプロフィール情報のうち「Street」の欄を編集するために,「EditProfile」ボタンをクリックします.

    f:id:y-cubed:20170612204817p:plain

  4. プロフィールを開くと下のようになっていることを確認します.

    f:id:y-cubed:20170612205035p:plain

  5. 住所(Street)の入力フィールドに

     "><script>alert("bomb!")</script>
    を書き加えます.

    f:id:y-cubed:20170612204422p:plain

  6. 住所(Street)の入力フィールドに書き加え終わったら,プロフィール設定をアップデートするために,「UpdateProfile」ボタンをクリックします.f:id:y-cubed:20170612202838p:plain

  7. プロフィールをアップデートすると,下のような「bomb!」と書かれたポップアップが表示されるので「OK」を押します.f:id:y-cubed:20170612202258p:plain

  8. プロフィールをアップデートしたら,Tomのアカウントからログアウトするために「Logout」ボタンをクリックします.f:id:y-cubed:20170612201707p:plain

 

Stored XSSが成功したかの確認

  1. 確認として,Jerry Mouseのアカウントに入ります.パスワードは「jerry」です.
  2. Jerryのアカウントに入れたら,Tomのプロフィールを見るために「ViewProfile」のボタンをクリックしてみます.f:id:y-cubed:20170612200843p:plain
  3.  下のように「bomb!」と表示されればStage1はクリアです.
    f:id:y-cubed:20170612200605p:plain

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...にポストすること.

考え方