skipfishで脆弱性チェック
Posted: Updated:
Webアプリケーション向けセキュリティスキャナ
(さらさらっとメモ書き的に公開しようと思ってたら、3週間ぐらい公開ボタン押すの忘れてた....)
このテのツールは手を出したことがなかったので、これを機に試してみた。Googleさんが言うなら間違いない!!とはいえ、セキュリティスキャナとしては正確性よりも速度と簡便さを重視だとか。
グーグル、ウェブアプリの脆弱性検査ツール「skipfish」を公開:ニュース - CNET Japan
skipfish - Project Hosting on Google Code
入れてみよう
何も考えずにmakeすると
/Users/*****/*****/skipfish% make cc -L/usr/local/lib/ -L/opt/local/lib skipfish.c -o skipfish -O3 -Wno-format -Wall -funsigned-char -g -ggdb -D_FORTIFY_SOURCE=0 -I/usr/local/include/ -I/opt/local/include/ \ http_client.c database.c crawler.c analysis.c report.c -lcrypto -lssl -lidn -lz http_client.c:39:18: error: idna.h: No such file or directory http_client.c: In function ‘parse_url’: http_client.c:277: warning: implicit declaration of function ‘idna_to_ascii_8z’ http_client.c:277: error: ‘IDNA_SUCCESS’ undeclared (first use in this function) http_client.c:277: error: (Each undeclared identifier is reported only once http_client.c:277: error: for each function it appears in.) report.c: In function ‘copy_static_code’: report.c:744: warning: passing argument 3 of ‘scandir’ from incompatible pointer type make: *** [skipfish] Error 1
libidnがないよー、と怒られたのでportで検索。
/Users/ahomu/Documents/skipfish% port search libidn libidn @1.15 (mail) international domain name library p5-net-libidn @0.12 (perl) Perl bindings for GNU Libidn Found 2 ports.
あったあった。上のだ。
/Users/*****/*****/skipfish% sudo port install libidn Password: ---> Computing dependencies for libidn ---> Fetching libidn ---> Attempting to fetch libidn-1.15.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/libidn ---> Verifying checksum(s) for libidn ---> Extracting libidn ---> Configuring libidn ---> Building libidn ---> Staging libidn into destroot ---> Installing libidn @1.15_0 ---> Activating libidn @1.15_0 ---> Cleaning libidn
オッケーオッケー。改めてmakeしてみます。
/opt/local/skipfish% make cc -L/usr/local/lib/ -L/opt/local/lib skipfish.c -o skipfish -O3 -Wno-format -Wall -funsigned-char -g -ggdb -D_FORTIFY_SOURCE=0 -I/usr/local/include/ -I/opt/local/include/ \ http_client.c database.c crawler.c analysis.c report.c -lcrypto -lssl -lidn -lz report.c: In function ‘copy_static_code’: report.c:744: warning: passing argument 3 of ‘scandir’ from incompatible pointer type See dictionaries/README-FIRST to pick a dictionary for the tool. Having problems with your scans? Be sure to visit: http://code.google.com/p/skipfish/wiki/KnownIssues
今度こそmakeできたみたい。ちょっとエラー出てるけど、気にせずGOします。
辞書ファイル?
skipfish version 1.17b by <lcamtuf@google.com> [-] SYSTEM ERROR : Unable to open wordlist 'skipfish.wl' Stop location : load_keywords(), database.c:967 OS message : No such file or directory
ためしたら辞書ファイル(wordlist)が読み込めないって怒られる。パス通ってないの? 言われてみればmakeした所にskipfish.wlなんて無いわけで、ためしに ./dictionaries/default.wlを ./skipfish.wl にコピー&リネームしてファイルを置いてみる。
れっつびぎん
skipfish version 1.17b by <lcamtuf@google.com> Scan statistics --------------- Scan time : 0:06:43.0898 HTTP requests : 55657 sent (138.26/s), 28327.33 kB in, 13121.99 kB out (102.62 kB/s) Compression : 1107.49 kB in, 2483.20 kB out (38.31% gain) HTTP exceptions : 1072 net errors, 0 proto errors, 351 retried, 722033 drops TCP connections : 1689 total (33.79 req/conn) TCP exceptions : 0 failures, 22 timeouts, 1 purged External links : 227 skipped Reqs pending : 1416 Database statistics ------------------- Pivots : 292 total, 52 done (17.81%) In progress : 198 pending, 35 init, 7 attacks, 0 dict Missing nodes : 2 spotted Node types : 2 serv, 95 dir, 5 file, 0 pinfo, 124 unkn, 67 par, 0 val Issues found : 13 info, 72 warn, 23 low, 33 medium, 0 high impact Dict size : 2102 words (103 new), 66 extensions, 181 candidates
スキャンを開始すると、延々と検査を続けます。一応リアルタイムに、どの程度のレベルの穴が見つかったかも見れますが、詳細は分からないので目安程度に眺めます。
放っておくと、このスキャン画面のまま延々とスキャンし続けます。適当なところでCtrl + Cを押すと、その時点の結果でレポートを生成してくれます。(スキャンはそこで終了になります)
結果はこんな感じで出力

脅威の程度に応じて、各セキュリティリスクを表示してレポートしてくれます。幸い、今回実験に使ったサイトでは高レベルの脅威はありませんでした。
結構楽しい
Google Codeのドキュメントに検出できる項目はリストアップされてますが、別途和訳を見つけたので、こちらを見ると良い感じです。
Skipfishで定義されているWebアプリに対するテスト一覧 » LandEscape Graphics
つい先日公開された1.17bをインストールしていましたが、今このエントリーを書いている最中に今のバージョンを確認したら、すでに1.31bになっていました。意欲的にバージョン番号を進めているようで、公開後のフィードバックを早速反映しているようです。