sWebMachineGun.exe実践編
ディレクトリ・トラバーサル/パス・トラバーサルを検査する場合
はじめに
sWebMachineGun.exeにはディレクトリ・トラバーサル/パス・トラバーサル専用の検査項目はないので、操作者自らが「このパラメータはファイルパスっぽい」と判断する必要がある
診断対象
「http://example.com/cgi-bin/perl-fileview.pl?file=test.txt&modeDot=0」
の「file」というパラメータが対象
まずは、ファイルパスっぽいパラメータを特定する
ここは基本的には操作者の技量といえるが、一応こういうパターンでわかる場合もあるという参考程度に。
検査用の置換方法としては、
- パラメータに各種記号を入れて壊す
- パラメータの先頭に「./」を入れてファイルパスなら無変換と同等な変換
「Execute」ボタンで実行
「何もしていない(ReplaceType=none)」と「[./]を前方追加」したものが、似ているという「bSQL?」となっているので、パラメータ「file」は、ファイルパスっぽいと推定された
ディレクトリ・トラバーサル/パス・トラバーサルのためのsWebMachineGun.exeの設定
「Setting」タブ
全消しするといろいろと不都合があるので、実際には全消しできない(1つ残る)
これは、後で消す
続いて「UseReplaceList」のチェックボタンをオフにする
- デリミタを「/」
- 値を「..」
さらに「繰り返し回数」を指定する
今回は10回とした
最後に「Custom」というグループの「Add」ボタンで、置換方法に追加する
最初からある1行目をダブルクリックして消す
そして、置換方法のチェックをオンにして有効化する
以上で「Setting」タブの設定は終了
「Request」タブ
「../」の繰り返しを埋め込みたい箇所に「%s%」マクロを注入する
以上で設定は終了
sWebMachineGun.exeの実行
「Execute」ボタンで実行
4つ目の繰り返し(../../../..)で、/etc/hostsが表示されているので、答え?は4階層ということが分かった
蛇足1
おそらくUNIX/Linux系統は、4つ以上であれば適切にディレクトリトラバーサル攻撃が成功するので、こうやって調べずにとりあえず20個ぐらい「../」を与えてしまうばいいと思うよ。
蛇足2
SQL InjectionのUNIX句のカラム数(nullで代用)を調べる時にも同じ方法で調べられるよ
「Custom」というグループで、
- デリミタを「/」⇒「,」
- 値を「..」⇒「null」
と読み替えてくれればいいと思う