Web脆弱性診断ツール Parosの使い方
ParosはWeb脆弱性自動検査ツールですが、全てのページを自動的に検査してくれるものではありません。あらかじめ検査するページを登録した上での検査になります。
以下にインストールから利用方法までを順に説明します。
ツールを「ダウンロードファイル一覧 - Paros - OSDN」からダウンロードします。Windows版とUnix版というものがあります。Unix版であればMacでも使えます。
適当なディレクトリに解凍して、startserver.shを起動します。Windowsの場合はstartserver.batか起動アイコンをクリックしてください。
実行はJavaVM上になってますが、Java8、Java7では起動できませんでした。JDK5で実行するのが安全です。
$JAVA_HOME/bin/javaw -jar paros.jar で起動できますので、適切なバージョンのJAVA_HOMEを指定して実行してみてください。
Paros側の設定は特にありません。ParosがProxyサーバとして動きますので「Tools > Option > Local Proxy」にてProxyサーバとなるホスト名とポートが指定されていることを一応確認します。
ブラウザの設定を行います。ブラウズのプロキシ設定からサーバにlocalhost、ポート番号を8080として設定します。
ブラウザでアクセスした内容を元にParos(Proxy Server)を経由したRequest、Responseの内容の脆弱性検査を行います。
次にデモ用にXSSを検出できるような簡単なHTMLを用意します。POSTした内容をHTML上に表示するというXSS対策していないCGIを用意しました。
test.pl
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML><BODY><form action='post.pl' method='POST'><input type='text' name='goo' value=''><input type='submit' value='Go'></form></BODY></HTML>";
post.pl
#!/usr/bin/perl if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'}); } else { $alldata = $ENV{'QUERY_STRING'}; } foreach $data (split(/&/, $alldata)) { ($key, $value) = split(/=/, $data); $value =~ s/\+/ /g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg; $value =~ s/\t//g; $in{"$key"} = $value; } print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head><title>TEST</title></head>\n"; print "<body>\n"; print $in{'goo'}; print "</body>\n"; print "</html>\n"; exit;
検査するページが用意できたら、プロキシ設定したブラウザからtest.plのフォームからデータを入力してpost.plに入力した内容をPOSTします。
実行した内容はParosに記録されます。
検査したい画面の読み込みができたら、Siteツリーの検査するURLを選択して、メニューの「Analyze > Scan」を実行します。
実行した結果は下部ウィンドウに検出した脆弱性の内容が出力します。またこの結果についてはメニューの「Report > Last Scan Report」を選択してHTMLで保存ができます。
検査結果のさらなる調査のために手動での検査がツールを使って行えます。
ツールバーの「Trap」を選択して、「Trap Request」にチェックをして、検査したい画面をブラウザで実行します。
実行するとRequestパラメータがParos画面に表示されますので、ここでRequest Parameterを書き換えることができます。
書き換えたらContinueボタンでPOSTを継続します。
HTML画面からの入力ではJavaScriptチェックでどうしても入力できない内容が発生しますので、手動で実行したい場合もこのツールは有効です。