■ 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。
上の画像を見ていると、検索したratproxyのhtml出力画面とちがう。
ratproxyのロゴがない。。
あれ?と思い、出力したreport.htmlのソース確認。bodyのCSSに、
background-image(url'ratproxy-back.png')
と設定されていた。
ratproxy-back.pngなんてないよ?
と思いながらDLしたパッケージのフォルダを見てみるとあった。
ちゃんとこのフォルダにパスを通していないからratproxyコマンドが不完全なのだろうか・・・?
とりあえず、手動で画像をreport.htmlと同じフォルダに持っていき、apache再起動→直らず
いろいろ悩み、コピーした画像ファイルの所有者を見ると、DLしたパッケージのデフォルトになっていたので、apacheに変更。
これでちゃんと表示された。
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。
上の画像を見ていると、検索したratproxyのhtml出力画面とちがう。
ratproxyのロゴがない。。
あれ?と思い、出力したreport.htmlのソース確認。bodyのCSSに、
background-image(url'ratproxy-back.png')
と設定されていた。
ratproxy-back.pngなんてないよ?
と思いながらDLしたパッケージのフォルダを見てみるとあった。
ちゃんとこのフォルダにパスを通していないからratproxyコマンドが不完全なのだろうか・・・?
とりあえず、手動で画像をreport.htmlと同じフォルダに持っていき、apache再起動→直らず
いろいろ悩み、コピーした画像ファイルの所有者を見ると、DLしたパッケージのデフォルトになっていたので、apacheに変更。
これでちゃんと表示された。