http://security.c-inf.com/index.php?Paros
Parosとは、ローカルプロキシとして動作する脆弱性検査ツールです。
なんのこっちゃ?
ローカルプロキシは、ブラウザから直接インターネットに出て行かせず、いったんローカルプロキシというソフトウェアを経由して出ていく的な仕組みです。
まずはparos-(バージョン)-win.exeをダウンロードしてインストール。
執筆時の最新バージョンは3.2.13でした。
インストール後起動すると既にローカルプロキシとして活動しています。
次にブラウザの設定。
プロキシの設定項目に「localhost:8080」と指定します。
これで完成。
適当にブラウジングしてみると、Parosが通信状況を取得できていることがわかるはずです。
どうなってるの?
ブラウザに「localhost:8080」と書いたことで、適当なURLを開こうとしたときに直接そこに行くのではなく「localhost:8080」というURLをまず見に行きます。
そこにはparosが待ち構えており、いったんリクエストを取得し、それから実際のURLに飛んでいくという動作になります。
まあparosが中継所になるということです。
次に実際に脆弱性を検査してみましょう。
まずは脆弱性のあるサンプルを用意。
アクセスすると、まず入力画面、そして適当に値を入れて進むと登録完了画面が出ます。
そしてParosのログにはスクリプトへのPOSTが保存されているはずです。
次にTrap Requestの機能を試してみます。
入力画面を表示した後、「Trap」タブの「Trap request」にチェックを入れます。
その後フォームを送信しようとすると、送信がParosによって止められます。
「id=aaa&submit=%E7%99%BB%E9%8C%B2」といった送信内容がキャッチされ、そしてこれを自由に編集することができます。
「id=<script>alert("XSS");</script>」
などと変更し、「Continue」すると送信内容が改竄され、完了画面でXSSが発生します。
しかし、これだけだと手動でチェックしているのとあまり変わりません。
自動チェックを試してみます。
まず登録画面から適当に値を入力し完了画面まで遷移します。
そしたらAnalyse→Scan All。
完了したらReport→Last Scan Reportとすると、見つかった脆弱性や送信したパラメータ、修正方法などを自動でリストアップしてくれます。
今回は以下の脆弱性が見つかりました。
Medium (Warning) Cross site scripting
Medium (Warning) Directory browsing
Medium (Suspicious) Lotus Domino default files
あ、XSS以外にもなんか見つかった。
Directory browsingはディレクトリ内のファイル一覧が見えてしまうよ、というものです。
「Index of /」のようなやつです。
修正するには「Options -Indexes」を指定します。
http://httpd.apache.org/docs/current/mod/core.html
Lotus Domino default filesは誤検出です。
他の脆弱性検出ツールでも誤検出することがよくあります。
何かというと「http://example.com/?OpenServer」のようなURLが有効になっているというものなのですが、mod_rewriteとか使ってると普通に反応しちゃうことが多々あります。
実際アクセスしてみて問題無ければスルーでよいでしょう。
とまあこのように、簡単に脆弱性検査が行えます。
しかしディレクトリリスティングってXSSと同レベルの脆弱性なのか…
Parosとは、ローカルプロキシとして動作する脆弱性検査ツールです。
なんのこっちゃ?
ローカルプロキシは、ブラウザから直接インターネットに出て行かせず、いったんローカルプロキシというソフトウェアを経由して出ていく的な仕組みです。
まずはparos-(バージョン)-win.exeをダウンロードしてインストール。
執筆時の最新バージョンは3.2.13でした。
インストール後起動すると既にローカルプロキシとして活動しています。
次にブラウザの設定。
プロキシの設定項目に「localhost:8080」と指定します。
これで完成。
適当にブラウジングしてみると、Parosが通信状況を取得できていることがわかるはずです。
どうなってるの?
ブラウザに「localhost:8080」と書いたことで、適当なURLを開こうとしたときに直接そこに行くのではなく「localhost:8080」というURLをまず見に行きます。
そこにはparosが待ち構えており、いったんリクエストを取得し、それから実際のURLに飛んでいくという動作になります。
まあparosが中継所になるということです。
次に実際に脆弱性を検査してみましょう。
まずは脆弱性のあるサンプルを用意。
<?php header("Content-Type: text/html; charset=UTF-8"); if($_REQUEST['id']){ print('登録ありがとうございます。'); print('あなたのIDは' . $_REQUEST['id'] . 'です'); exit(); }else{ ?> <form method="POST" action=""> ID:<input type="text" name="id" value=""><br /> <input type="submit" name="submit" value="登録"> </form> <?php }今時こんな馬鹿なソースを書く人なんていませんが、あえて脆弱性のあるサンプルということで。
アクセスすると、まず入力画面、そして適当に値を入れて進むと登録完了画面が出ます。
そしてParosのログにはスクリプトへのPOSTが保存されているはずです。
次にTrap Requestの機能を試してみます。
入力画面を表示した後、「Trap」タブの「Trap request」にチェックを入れます。
その後フォームを送信しようとすると、送信がParosによって止められます。
「id=aaa&submit=%E7%99%BB%E9%8C%B2」といった送信内容がキャッチされ、そしてこれを自由に編集することができます。
「id=<script>alert("XSS");</script>」
などと変更し、「Continue」すると送信内容が改竄され、完了画面でXSSが発生します。
しかし、これだけだと手動でチェックしているのとあまり変わりません。
自動チェックを試してみます。
まず登録画面から適当に値を入力し完了画面まで遷移します。
そしたらAnalyse→Scan All。
完了したらReport→Last Scan Reportとすると、見つかった脆弱性や送信したパラメータ、修正方法などを自動でリストアップしてくれます。
今回は以下の脆弱性が見つかりました。
Medium (Warning) Cross site scripting
Medium (Warning) Directory browsing
Medium (Suspicious) Lotus Domino default files
あ、XSS以外にもなんか見つかった。
Directory browsingはディレクトリ内のファイル一覧が見えてしまうよ、というものです。
「Index of /」のようなやつです。
修正するには「Options -Indexes」を指定します。
http://httpd.apache.org/docs/current/mod/core.html
Lotus Domino default filesは誤検出です。
他の脆弱性検出ツールでも誤検出することがよくあります。
何かというと「http://example.com/?OpenServer」のようなURLが有効になっているというものなのですが、mod_rewriteとか使ってると普通に反応しちゃうことが多々あります。
実際アクセスしてみて問題無ければスルーでよいでしょう。
とまあこのように、簡単に脆弱性検査が行えます。
しかしディレクトリリスティングってXSSと同レベルの脆弱性なのか…
PR
トラックバック
トラックバックURL: