一応、ウェブアプリ開発に必要な脆弱性の知識は最低限覚えていると思っていますが、いったんきちんとしたツールなどで勉強したいなと思い調べたところ、IPAが学習用ツールを配布していたので使ってみることにしました
ダウンロードには申請が必要
ツールのダウンロードには申請が必要です
企業名などを書くところがありますが、個人でも大丈夫そうでした
https://www.ipa.go.jp/security/vuln/appgoat/index.html
申請後、メールでダウンロードリンクがお知らせされるので、そこからダウンロードします


ツールを利用してみる
ダウンロードしたzipを展開し、AppGoatSettings.exeを起動します
ダイアログの「Apache起動」をクリックすると、学習用ページが起動する仕組みでした





体験してみる
最初の章である「クロスサイトスクリプティング」の体験内容を記載します

解説を読み進めていくと、実際に入力可能なページが表示されます

以下のように入力してみました

想定通り、アラートが表示されました

対策版の動作確認も行えます

今度はポップアップは表示されず、きちんと文字列がエスケープされて正しく処理されました

実際にコードを修正して動作確認も行えました

修正後はその場で修正動作の確認も行えました
脆弱性の勉強には利用できそうだが、問題もあり
実際に動かして学習できるため、
・どのような攻撃手法があるか
・どのように修正できるのか
を、手を動かして演習できるのはとても良い!
特に実際に攻撃が行われるとどのような挙動をするのかは、なかなか体験できない部分だと思う
ただ、演習環境がPHP、テンプレートエンジンがsmartyということで、このあたりに馴染みがないと
「理屈も修正方法も分かるが、PHPがわからない」というもどかしい状態になる
また、演習アプリ自体はWebアプリケーションとして動作しているようだけど、動作するのはWindowsのみのようで
他環境では動きません
WebアプリであれDocker環境などにして複数の環境で動くようになると、より学習しやすくなると思いました
(Web開発はMacBookを利用して行っているため)
あと演習を進めていたら、一部ページでエラーが発生し、修正の演習が行えなかったのも気になった

自分はPHPは苦手な言語のため、プログラムを修正しようにもどのあたりを修正してよいのかわからなかった
ただ、この演習のためだけにPHPを勉強する気にもなれず・・・
最低限、リクエストの取得や、smartyを利用した画面表示の部分が理解できていれば何とかなりそうなので
その部分だけ簡単に勉強してから演習を再開しようと思います