sWebMachineGun.exe実践編
置換したリクエストとは別のレスポンスを検査する場合で、今度はCSRFトークンによる画面遷移制御が行われている場合
診断対象
こんな感じ
入力画面→確認画面→完了画面
そして、完了画面に遷移する際には、hiddenタグのCSRFトークンを正しく返す必要がある、、、というような対象
sWebMachineGun.exeの設定
メインの設定は、HTTPリクエストの設定と、置換方法の設定
sWebMachineGun.exeの設定1
「Request」タブに、二つのHTTPリクエストを設定して、
判定対象リクエストをNo1(2つ目のリクエスト)に設定する
一つ目はこんな感じ
リクエストとしては「一つのHTTPリクエスト(一番シンプル)」と同じ。
二つ目はこんな感じ
- 変換対象ページが No0
- 判定対象ページが No1
となっている。
こういう設定にする方法は後述している
ちなみに「AutoTarget」がオフになっているが、オンにすると、変換対象/判定対象がGUIで表示されているページに自動で追随するので、オフにしている。
sWebMachineGun.exeの設定2
「Setting」タブの置換方法は、キャプチャ画像を分かりやすくするために2つだけ。
- 「値」の前方に「'"'"`a--><s>【マーキング文字】【変数名】/</s>」を追加する
- 「値」の前方に「'」を追加する
「お勧め」ボタンにはいろいろな置換方法が用意してありますよ。
「UseName」をチェックして、パラメータの解析(名前と値を解析)を実施するように指示する
この画面で、変換対象ページをNo0と指定している
sWebMachineGun.exeの設定3
「Judge/Regex」で、判定対象ページをNo1に指定している
sWebMachineGun.exeの設定4(CSRFトークンの設定)
「GeneralSetting」タブの「CSRF Token」ボタンで、表示されるダイアログで設定する。
画面では、
- 抽出方法として、csrfTokenという名前のhiddenタグ(またはAタグのクエリ文字列)
- 貼付方法として、csrfTokenという名前のポストデータ(またはクエリ文字列)
ということになっている
sWebMachineGun.exeの実行
「Execute」ボタンで、実行できるのですが、結果はこんな感じで、各変数に対して、各置換方法を与えたHTTPリクエストを送信し、そのレスポンスからCSRFトークンを探し出し、次のリクエストにそのトークンを埋め込んでいることが分かると思う。
ちなみに、CSRFトークンの設定画面で「Null Token」がオンとなっていたので、
- トークンの変数の値が空文字列
- トークンの変数自体か存在しない
というパターンも実行している