uso

雑記いろいろ
★書いてある内容に保証は一切ありません。
 ご自身で判断をしてください。

[server] ratproxy

2010-03-28 18:02:31 | インポート
■ ratproxyとは

Google社内で現役の脆弱性検知ツール。
プロキシサーバとして動作するオープンソースソフトウェア。
同ソフトウェアを経由してWebアプリケーションを操作することで、XSS(Cross Site Scripting)問題や不適切なXSRF(Cross Site Request Forgeries)対処など、各種の脆弱性を検出できる。

付属するratproxy-report.shを併用することで、注釈や問題のランク付けをまとめたレポートを出力することが可能。

参考:http://journal.mycom.co.jp/articles/2008/07/17/ratproxy/index.html

■ 必要な環境など(拾い読みなので不確定情報多)

・動作するOS
   * Linux
   * FreeBSD
  * MacOS X
  * Windows (Cygwin)

Winの場合はCygwinというのは必要らしい。
今回はCentOSなので無視で。

Linuxはopenssl-develというのがいる、らしい。
yumで確認すると、なぜか入っていた。のでいい。
あと、makeを実行しないとだめ。


[補足]
Cygwin
 Cygnus Solutions社(現在ではRed Hat社の一部門)が開発したWindows用の開発ツールのセット。
 GNUプロジェクトによる開発ツール群をWindows環境用に移植したもの。GNU+Cygnus+Windowsの意味。
 GNUとは、FSF(非営利の民間団)が進めているUNIX互換ソフトウェア群の開発プロジェクトの総称。
 Windows環境でUNIXの機能を利用してプログラムを作成したり、UNIXのコマンドを使用することができる。
 シグナルやソケットなど、UNIXにあって本来Windowsにはない機能は、Cygwin APIと呼ばれるライブラリを
 追加することで利用可能になる。


■ makeについて

参考サイトの抜粋。

Makefileには、ソフトウェアをコンパイルするための手順やインストールするファイルなどが記されています。
→つまり、何かしらのソースインストール用パッケージをDLすると、Makefileという名前のファイルがあるということらしい。

Makefileの存在するディレクトリ内でmakeコマンドを実行すると、 Makefileの記述に基づいてソースがコンパイルされ、実行ファイルが生成されます。
→今回だったらratproxy.exeとかかな?

Makefileは、configureスクリプトを実行することにより、システムに合ったものが自動的に生成されます。
→configureはシェルスクリプトで、実行するとソースファイルをコンパイルする前に、インストール対象となるシステム特有の機能/情報をチェックし、チェック状況を記述したMakefileを作成するらしい。
Makefileがない場合は、こっちを先にする。。のか?


手順
  1. tarコマンドでアーカイブを展開
 2. configureスクリプトを実行してMakefileを生成
 3. makeコマンドでコンパイル
 4. make installコマンドで実行ファイルなどをインストール

大体こんな感じらしい。

参考:
http://www.linux.or.jp/JM/html/GNU_make/man1/make.1.html
http://www.linux-beginner.com/linux_other2.html
http://www.lovebug.jp/index.php?%A1%D6.%2Fconfigure%A1%D7%A1%A2%A1%D6make%A1%D7%A1%A2%A1%D6make%20install%A1%D7%A4%CE%B0%D5%CC%A3


■ ratproxyをインストール

ソースからインストールは初めてでよくわからん。。
exeって本当はbinとかに入れるのかもしれないが、とりあえず適当にフォルダを作って、そこで色々やってみる。

DLする。
# wget http://ratproxy.googlecode.com/files/ratproxy-1.58.tar.gz

解凍
# tar xvfz ratproxy-1.58.tar.gz

こんなのが表示される
-------------------------------
ratproxy/
ratproxy/doc/
ratproxy/doc/COPYING
ratproxy/doc/TODO
ratproxy/doc/README
ratproxy/doc/Solaris.README
ratproxy/flare-dist/
ratproxy/flare-dist/LICENSE.TXT
ratproxy/flare-dist/flare
ratproxy/flare-dist/README
ratproxy/Makefile
ratproxy/README
ratproxy/config.h
ratproxy/debug.h
ratproxy/flare
ratproxy/http.c
ratproxy/http.h
ratproxy/keyfile.pem
ratproxy/messages.list
ratproxy/mime.c
ratproxy/mime.h
ratproxy/nlist.h
ratproxy/ratproxy-back.png
ratproxy/ratproxy-report.sh
ratproxy/ratproxy.c
ratproxy/ssl.c
ratproxy/ssl.h
ratproxy/string-inl.h
ratproxy/types.h
------------------------------
Makefileがあった。


# cd ratproxy移動。

# make
こんなのが表示された
cc ratproxy.c -o ratproxy -Wall -O3 -Wno-pointer-sign -D_GNU_SOURCE http.c mime.c ssl.c -lcrypto -lssl

成功したようだ。ratproxyというファイルがある。これがexe?Linuxは拡張子関係ないからよくわからんが。。
いろいろなサイトを見ていると、Makefileの修正やlare-dist/flareの入れ替えとか書いてあるのだがいらないのだろうか?情報が古いだけで、改善されているのか?
→気にせず、とりあえず実行して様子を見てみる

■ ratproxyの実行

起動してみる。
# ratproxy -w ratp.log

-wはログ出力オプション。
-w <ファイル名>
これで起動して、Webブラウザからのアクセス待ち状態になる。

とめるには、コンソールでCtrl+Cらしい。
停止コマンドはないのか?

エラーが・・・
-bash: ratproxy: command not found。

コマンドパスが通っていない。
参考:http://www.geocities.jp/shinonomenod/linux.html

素人にパスを通すのは大変なので、binにexeを移動。
# cp -a ratproxy /bin
(-aは、できるだけ属性や構造を保持するオプション)

/binにratproxyがあるのを確認。


実行
# ratproxy -w ratp.log
ratproxy version 1.58-beta by

[!] WARNING: Running with no 'friendly' domains specified. Many cross-domain
checks will not work. Please consult the documentation for advice.

[*] Proxy configured successfully. Have fun, and please do not be evil.
[+] Accepting connections on port 8080/tcp (local only)...

WARNINGがあるが、別に大丈夫らしい。

動いている間に、IEのプロキシを設定して、アクセスしてみる。
接続できない・・・なぜ?netstatで見ると8080はListenしている。
※ratproxyは-pオプションでポート番号を指定しなければデフォルトで8080ポートを使う

ratproxyコマンドをもう少し調べてみると、
 -r
  起動したratproxyをリモートの端末が使うことを許す。
  これをつけなければ、ratproxyを起動した端末からしか接続ができない。

というのがあった。コマンドを変更。
# ratproxy -r -w ratp.log

これで接続、成功。


だが・・・なんかコマンド画面にいっぱい出ているのは何だろう…?
-------------------------------------------------------------------------------
PROGRAM ABORT: certificate load failed [ssl_start(), ssl.c:147]
27876:error:02001002:system library:fopen:No such file or directory:bss_file.c:352:fopen('keyfile.pem','r')
27876:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
27876:error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib:ssl_rsa.c:720:
-------------------------------------------------------------------------------
こんな感じの繰り返し。。

よくわからないので、とりあえずレポート出力をしてみる。

# sh ratproxy-report.sh ratp.log > report.html
とか
# ./ratproxy-report.sh ratp.log > report.html
でもOK。
シェルはよくわからない。。

作成したreport.htmlを確認すればOK。
Ratp

上の画像を見ていると、検索したratproxyのhtml出力画面とちがう。
ratproxyのロゴがない。。

あれ?と思い、出力したreport.htmlのソース確認。bodyのCSSに、
  background-image(url'ratproxy-back.png')
と設定されていた。

ratproxy-back.pngなんてないよ?
と思いながらDLしたパッケージのフォルダを見てみるとあった。
ちゃんとこのフォルダにパスを通していないからratproxyコマンドが不完全なのだろうか・・・?

とりあえず、手動で画像をreport.htmlと同じフォルダに持っていき、apache再起動→直らず
いろいろ悩み、コピーした画像ファイルの所有者を見ると、DLしたパッケージのデフォルトになっていたので、apacheに変更。
これでちゃんと表示された。

Ratp2





最新の画像もっと見る