公式サイト

Parosproxy.org - Web Application Security

 

はじめに

Parosは、Javaで書かれたWebアプリケーション用セキュリティ評価ツールです(開発元:ProofSecure.com )。プロキシとして動作するため、サーバとクライアント間のHTTPおよびHTTPSデータ(Cookieやフォームフィールドを含む)を傍受し、変更することを可能にします。Parosの主な機能には、HTTPメッセージの閲覧/編集機能(クライアント証明書にも対応)、プロキシ連鎖機能(別のプロキシサーバへクライアントからのリクエストを転送する機能)、フィルタ機能、脆弱性スキャナ機能などがあります。

本ユーザガイドは、Paros の各種機能およびGUIインターフェースについて説明したものです。

対応プラットフォーム:  Parosは、プラットフォームの種類を問わず、広範囲のユーザ向けに開発されたツールです。ただし、実行するには、Java Run Time Environment (JRE)のバージョン1.4.2 以上が必要になります。

 

インストール (for Windows)

Parosをインストールする前に、まずJava Run Time Environment (JRE)のバージョン1.4.2以上がシステムにインストールされていることを確認してください。インストールされていない場合には、下記よりダウンロード、インストールしてください。

英語サイト: http://java.sun.com/javase/downloads/index.jsp
日本語サイト: http://java.sun.com/javase/ja/6/download.html

  1. Paros公式サイト(下記URL)からParosプログラムをダウンロードします。2008年4月14日現在の最新バージョンは、Version 3.2.13です。
    http://sourceforge.net/project/showfiles.php?group_id=84378

  2. Windows版の場合、ファイルを実行するとセットアップウィザードが現れるので、ウィザードの指示に従いインストールを行ってください(インストールプロセスの主な画面キャプチャは以下参照)。インストールが完了すると、デスクトップ上にショートカットが作成されます。プログラムの実行は、このデスクトップショートカットからも可能です。

    1. Windows版 ダウンロード
      paros_download_dialog.png

    2. セットアップ実行プログラムを起動
      paros_download_desktop.png

    3. セットアップウィザード
      paros_wizard_01.png

    4. インストール先を指定
      paros_wizard_02.png

    5. インストール完了
      paros_wizard_03.png

    6. デスクトップ上に作成されたショートカット
      paros_shortcut.png

ブラウザとParosの設定

  1. Parosはプロキシとして動作します。Parosを起動し、Webブラウザのプロキシ設定で指定する項目をParosに設定します。ポートおよびその他各種設定の変更は、Parosを起動後、[Tools] → [Options]タブより行うことができます。
    Paros-proxy_setup_1.png

    左側のペインの[Local proxy] を選択して、右側のペインの「Address」に”localhost”、「Port」に任意のポートを設定します。この時、設定するポートが別のアプリケーションによって使用されていないことを確認してください。
    Paros-proxy_setup_2.png

  2. Webブラウザ(IE等)を開き、プロキシの設定を行います。プロキシ名(Address)はParosで指定した”localhost” を使用してください。また、プロキシポートは、HTTPおよびHTTPSとも8080に設定してください。

  3. ご利用のPCがファイアウォールの内側で実行しており、事前に定義されたプロキシ(会社のプロキシ等)経由でのみインターネットへのアクセスが許可されている場合は、Parosのプロキシ設定をそれに準拠するよう設定する必要があります。メニューの[Tools] → [Options] で、左側のペインの[Connection] を選択し、右側のペインの「Use on outgoing proxy server」にチェックを入れ、「Address」および「Port」のフィールドを変更してください。

    注意: 全てのバージョンのParosにおいて、SSLで保護されたWebサイトにParos経由でアクセスしようとすると、ブラウザ上にSSL証明書に関するセキュリティ警告が表示されます。これは、Parosが「中間者(man-in-the-middle)」として動作するため、メッセージの解読に独自の証明書を使用する必要があるからです。プログラムを継続するには、証明書を許可してください(もしくはインポートして警告を消してください)。*1

Parosによる脆弱性診断

長くなるので別ページにて

 

Tips and Tricks

User-Agentについて

ParosはHTTPリクエストヘッダ「User-Agent」の末尾に製品名およびバージョンを追加してサーバに送信します。

Parosのバージョンが3.2.13の場合

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1) Paros/3.2.13

Parosを起動するショートカットのリンク先の末尾に「-nouseragent」という起動オプションを設定して起動すると、User-Agentに製品名およびバージョンが追加されなくなります。

Paros-UA.PNG

 

セッションデータの保存先

  • セッションデータを保存時は正常に処理が完了するので気づきにくいですが、現行のParosには、マルチバイト文字を含むファイルパスに保存されているセッションを開こうとするとエラーになる、という不具合があります。
    保存先にはマルチバイト文字を含まないファイルパスを指定してください。
 

ログ保存

Parosのログをテキストファイル化するのに一番手っ取り早い方法は以下のとおりです。

  1. 「History」ペイン内のリストを全選択(フォーカスをおいてCtrl-a)。
  2. メニューの「File」→「Export Messages to File...」をクリック。
  3. 保存先ダイアログで任意の保存場所とファイル名を指定して【Save】をクリック。
 

リソース保存

「History」ペイン内のリストをひとつ選択して、メニューの「File」→「Export Response to File...」をクリックすると、HTTPレスポンスボディをファイルとして保存できます。
保存先やファイル名を指定するダイアログの「File name:」には、リクエストに応じたファイル名が自動的に設定されます。
例1:http://www.example.com/sample.do → "sample.do"が設定される。
例2:http://www.example.com/js/sample.js → "sample.js"が設定される。

 

Trap

Trapタブの「Trap request」にチェックを入れると、すべてのリクエストをトラップします。特定のリクエストのみをTrapしたい場合には、メニューの[Tools]→[Options...]→[Trap]にある「Use inclusive filter」にチェックを入れ、直下のテキストボックスに、Trapしたいリクエストにマッチする文字列を記述してください。
文字列にはワイルドカード "*" を使用できます。*2

 

参考資料

CVS

SourceForge.net: CVS ここでJavaのソースを取得可能です。

  • ソース取得用設定
        備考
    ホスト paros.cvs.sourceforge.net  
    リポジトリーパス /cvsroot/paros  
    ユーザ anonymous  
    パスワード なし  
    接続タイプ pserver  

質問箱

Parosに関する疑問・質問がございましたら、お気軽にこちらへどうぞ

 

ログインしている画面の脆弱性

GK5? (2009-05-26 (火) 12:35:48)

まだまだ使いこなせてないので初歩的な質問かもしれませんが、ご了承ください。

ログインが必要な画面の脆弱性の診断に使えるのかを教えていただければと思います。
具体的には以下になります。
・[analyze]→Spiderはログインが必要な画面は取得できないでしょうか。
・プロキシ経由でログインが必要な画面URLを取得し、Scanを実行した場合に正しく診断できているのでしょうか。

  • Spiderについて
    • 手動で一度正規のアカウントでログインしてからSpiderを走らせると、ログイン後の画面に存在するリンクやフォームも認識する場合がありますが、自動的には取得できないことがほとんどです。
      また、あくまでも別の遷移先が存在するということを認識するだけなので、さらに奥の画面を辿るためには手動で適切な値を送信してからSpiderを走らせなければなりません。
      結局、一つ一つの画面を手動で辿るのと変わらないことになります。

  • プロキシ経由のScanについて
    • ここでの「プロキシ経由」がリバースプロキシの事を指すならば、リバースプロキシの動作仕様による、としか言えません。
      リバースプロキシがクライアントからのリクエストを変換してサーバに送信したり、サーバからのレスポンスに手を加えてクライアントに返したりしてる場合は、Scanの結果は信頼できない可能性が高いです。
      そもそもParosのScan機能は簡易的なものなので過信は禁物なのですが。 -- ニルフィ 2009-05-27 (Wed) 02:20:16

トークン

asa? (2009-01-22 (木) 16:06:40)

XSRF対策でトークンチェックがされているサイトの診断は
できないでしょうか?

  • サイト管理者のニルフィです。
    Parosの"Scan"で診断」という意味なら、残念ながら難しいです。
    XSRF対策としてブラウザへのレスポンスのたびに異なるトークンを発行している場合は、
    診断対象のリクエストデータを、ひとつずつコツコツと手動で診断する必要があります。

    もし、診断対象サイトがセッションごとに固定値のトークンを発行している場合、
    Parosのメニュー[Tools...]→[Filter...]にある
    「Replace HTTP request (header|body) using defined pattern.」に
    セッションを確立した後に発行されたトークンを設定することで
    Parosによる機械的なScanが正常に機能するかもしれません。 -- ニルフィ 2009-01-23 (金) 02:10:47

誤検知?

CHI? (2009-01-07 (水) 17:48:15)

Lotus Dominoなんて導入していないアプリをスキャンしても
「Lotus Domino Default files found.」が検知される事
があるのですが、なにか誤検知される鍵があるのでしょうか?

  • サイト管理者のニルフィです。
    Lotus Dominoは「URLコマンド」という機能で "?Open~" という文字列をURLの末尾に指定します。
    また、ParosはLotus Dominoが稼動しているかどうかを検出するために "?Open~" という文字列をURL末尾に指定して診断対象サイトにリクエストを送信します。
    ここで、診断対象サイトがブラウザに返すHTTPレスポンスのコードによっては、Parosが「Lotus Domino Default files found.」と誤検知してしまうようです。 -- ニルフィ 2009-01-08 (木) 14:18:43

Parosのproxy設定

タフィロス? (2008-07-26 (土) 14:14:54)

(2008-07-26 Sat 13:23:30)parosのproxy設定はローカルしかできないんですか?

  • メニューの [Tools] → [Options] → [Local Proxy] で設定する情報は、Parosが動作しているPC上のWebブラウザで使用するのでローカルアドレスになります。
    ParosがWebブラウザからのリクエストを待ち受けるための設定です。

    ParosがWebブラウザからのリクエストを受けた後に通す必要がある外部プロキシは、 [Tools] → [Options] → [Connection] の [Use proxy chain] で設定します。

    『Use an outgoing proxy server』にチェックを入れて、外部プロキシのドメインやIPアドレスとポートを入力すればOKです。

    この場合のHTTPリクエストの流れは、
    《Webブラウザ》→《Paros》→《外部プロキシ》→《インターネットorイントラネット》
    となります。-- ニルフィ 2008-07-26 (土) 14:18:04