サーバ/Webアプリケーション脆弱性チェックツールの個人的まとめ(フリー/有償)

ちょっと作成したWebアプリケーションに脆弱性があるかをきちんとチェックしないといけない羽目になったので調べてみた.

出来ればフリーで,無ければ有償でもいいので.いや,やっぱりフリーで...

調べて実際にインストールや使ってみた順に載せてみます.

Nessus

http://www.nessus.org/nessus/
フリーでは一番使いやすいサーバ脆弱性診断ツールかな.有名だし.
でもサーバの脆弱性診断という位置づけが強い

MultiInjector released - automatic parallel website Injector / Defacer

http://chaptersinwebsecurity.blogspot.com/2008/10/multiinjector-released-automatic.html
Pythonの2.4以上で動作
Windowsでも使えるが,いまいちやり方がわからなかったので普通に*NIX系でやるほうが楽
詳細な使い方は上記URLを参照すべし.

Wikto: Web Server Assessment Tool

http://www.sensepost.com/research/wikto/
これも簡単なオンライン登録が必要です.
ちょっと使いづらいのとウィザードのウィンドウサイズが固定だったのが使いづらかった
でも,調べたいホストがHTTPなのかHTTPSであるとか,Proxyがあるかとかで調整が出来るのでそれなりに使えそうなWindowsのツール
これもウェブサーバのアセスメントツール

Nikto

http://www.cirt.net/nikto2
使えるプラットフォームはWindows(ActiveState Perl),Mac OSX,その他Linux(RedHat, Solaris, Debian, Knoppixなど)
基本,Perl実行できれば使える
どんなディレクトリがあって,どんなサービスがあるかを列挙してくれる
脆弱性のあるサービスならそれを指摘してくれるコマンドラインベースのツール.

NiktoFEとWFuzzのフロントエンド

http://sf.net/projects/niktofe
http://sf.net/projects/wfuzzfe
やっぱりWebサーバの診断て感じ.うーむ.

Mini MySqlat0r

http://www.scrt.ch/pages_en/minimysqlator.html
sqlインジェクション脆弱性をチェックしてくれるツール.
Javaなのでマルチプラットフォームというのが売りか.
プログラムはjarで配布されているのでJavaのRuntime環境があれば実行可能.
マイナーなツールくさい.

Metasploit

http://japan.internet.com/webtech/20081009/11.html
http://www.metasploit.com/
一言で言えばexploit詰め合わせツール.
実行したいexploitコードが収録されていればすぐに実行してみることが出来る.
GUI版もでたことだし,Windowsでも使い勝手がよくなったのですが
意外と使い方のWebサイトがあまりないので,そのうちまとめてみようかと思います.
ただ作ったWebアプリにどんな脆弱性が存在しているかを確認するには不向きかな.
むしろ,どういう脆弱性が存在しているかが確定できたら,そこをついてみて挙動が見たい
とか言うときに便利だと思います.
古いバージョンだとこの辺とか参考になるかと
http://grin.flagbind.jp/archives/2005/01/metasploit_v23.html

sqlmap

http://sqlmap.sourceforge.net/
Blind SQL injectionとInband SQL injectionなツール
使い方などはあまりGoogleに聞いても分からないので本家のページが頼り.

DirBuster

一言で言うとディレクトリやファイルのぶっこ抜きツール.
隠しファイルがきちんと隠されているかなどのチェックに使える.
チェックをしたいディレクトリとファイルのリストを渡す必要があるが,OWASPプロジェクトで生成されたリストが付いて来るのでそれを使うだけ.便利.
というかそのリストを作るのも結構な手間だったとか.
https://www.owasp.org/index.php/Category:OWASP_DirBuster_Project
John the Ripperディレクトリ/ファイル版という感じ?

Paros

http://www.parosproxy.org/index.shtml
これはやりたかったことに一番近いかも!!
使い方は下記URLとか参照するとよいかも
http://d.hatena.ne.jp/shimooka/20070521/1179720807
基本はproxyの設定をしたブラウザでチェックしたいアプリケーションにアクセスするだけ.
ただ,上記のエントリにはレポートについてが書いていなかったので補足すると
スキャンした結果の脆弱性報告レポートを非常に簡単にHTMLの形で出してくれる.これが便利.
対応策も一応提案してくれるので便利かな.
言語特有のチェックはしない.PerlだろうがPHPだろうがPythonだろうがアプリはアプリってことで,一般的なチェックをしてくれた.

Ratproxy

http://code.google.com/p/ratproxy/
インストールがすんなりいかないので有名なgoogleのツールw
が,良くREADMEとか見ればインストールできる.
MacOSXだとかなり簡単すぎる.あとはブラウザのローカルプロキシを設定すればすぐつかえる.linuxでも出来た.
標準のログファイルは読みにくいのでhtmlに変換するスクリプトがあるのでそれを使うと
それなりに見栄えのするレポートが生成されます.
困ったら「ratproxy インストール」でいっぱい出てきます.人気が高いことが分かります.
さすがGoogle

三尸 sanshi

id:ikepyonさんから紹介されたツール
https://www.webappsec.jp/で新規ユーザ登録に失敗した(登録はできたが変なエラーが出たので対応できませんみたいなエラーログがでた)ので
http://webappsec.sakura.ne.jp/modules/xpwiki/にてユーザ登録,該当プログラムをダウンロードしてみた.
READMEがあったのでそれを読みながらproxyの設定をしてからStart proxyを実行する.
WEBアプリケーションをブラウザで踏んでみると,何も表示されない.
が,どうもsanshiアプリケーション側にはパラメータが渡されていているみたい.
IEだと表示が許可されませんになり,FirefoxだとCGIに飛ぼうとするがリンク元の表示でとどまる.
ちなみにproxyを設定していないと,ブラウザではもちろん別のエラー画面.
Firefoxだと「プロキシサーバへの接続を拒否されました」の画面になる.
なので,操作は正しかったように思う.
とりあえずstop proxyしてからStart scanをしてみるものの,特に反応がない.
あれ、使い方間違えているかな・・・・
英語版のREADMEがあったので読んでみると,最初にNecessary modulesと書いてあるので,
無関係にも思えるが全部ダウンロードしてみる.
うーん,これはすでに入っているような気もするが,上書きor解凍して置いてみる.
挙動がかわったようには見えない・・・・
WEBアプリケーションにアクセスするたびに左のペインの表示がかわるのですが,
もしかしたらついてきているxmlファイルを検査したいアプリケーションに応じて中身をいじらないとだめなのかな?
とりあえずちょこっと情報を隠しましたが起動した画面はこんな感じ.


HTTPリクエストのところに表示されるものは,
Basic認証のアプリをチェックしたときにもそれらの情報も載ってあったので取れるものは全部表示してくれるみたいです.
正しい使い方が出来れば使えそうと思いつつ,とりあえず今日はここまで.
ヘタレで申し訳ないです・・・
ちなみにsanshiって面白い名前と思って調べてみたら
http://ja.wikipedia.org/wiki/%E4%B8%89%E5%B0%B8のことみたいです.
僕はてっきり三枝かとw
http://webappsectest.blogspot.com/とかhttp://sourceforge.jp/projects/sanshi
をチェックしていればそのうち何か情報が出てくるかも.

12月3日 追記

すみません.僕のせいでした.普通に動きました.
id:ikepyonさんからシグネチャを頂きまして,それを使ったらうまく動きました.
やっぱりシグネチャの書き方が間違っていた模様です.
以下が,脆弱性チェックを実行した結果です.

URLだけ塗りつぶしましたが,Vulnerable,Nonvulnerable,Not Testedという結果が返ります.
詳しく見るときはその項目をダブルクリックすると見れます.
使い方は基本はREADMEに書いてあるとおりです.
Proxy型なので,ブラウザのproxy設定を行った後アプリを起動して
チェックしたいページを巡回します.
巡回し終わったら,アプリのほうで一気にスキャンを開始するという感じです.
あとは結果が出るまで待つと上記のような画面が出ます.
シグネチャの書き方さえつかめれば,簡単に実行が出来ます.

BurpSuite

これもProxy型のWebアプリケーション脆弱性チェッカです.
超有名なのに忘れていたのでここにメモします.
実行するのにJavaの実行環境さえあればすぐに利用できるので超お手軽.
同じproxy型でもParosはシームレスにバックグラウンドでproxyの解析機が実行しているイメージだが
こっちはリクエストがある度にBurpSuiteで止められているのでその都度
自分で評価をしてから,次のページへと続行するかドロップするかを選択することで
逐一アクセスコントロールが出来る.
面倒と思うかもしれないが,そのWebアプリケーションが裏でどのくらいパラメータの受け渡しをしているかなども
一目瞭然なので,どのタイミングでどのようなパラメータが渡されているかを確認できるデバッグツールとしても使えそう.
沢山forwardする必要のある場合はそれだけリクエストがあったということですね.
見られるデータとして具体的には,パラメータの属性名と値,Cookieの値などを見ることが出来ます.
BurpSuiteの使い方に関しては以下のページを見ればちょろっと触るにはちょうどいい.
Burpsuite (Burp Proxy) の使い方
http://root99.blogspot.com/2008/06/webburpsuite.html
2008年12月16日追記)BurpSuite1.2がリリースされています
http://portswigger.net/suite/
2009年10月13日追記)
Burp Suiteの起動バッチファイル(文字コード指定)
http://kikuz0u.x0.com/blog/?p=261

Sleuth

http://www.sandsprite.com/Sleuth/faq.html
BurpSuiteと同じProxy型のウェブアプリケーションチェッカ.
違いは簡易ブラウザ付きのアプリケーションなので,別途Webブラウザを上げる必要がない.
proxyの設定は特にしなくてもボタンをクリックするだけのお手軽設計.
使い勝手は抜群.
proxyをアクティブにするとアクションを起こすとHTTPリクエストを投げる前に
それを投げていいかキャンセルするかとかを聞いてくれる機能がある.
そういう意味では使い勝手はBurpSuiteと一緒.
多分機能としてはBurpSuiteのほうがもしかしたら高機能かもしれないが
シンプルな構成なのが逆にいいかも.
フリーのバージョンでもツールボックスが沢山あり,これらのプラグインの自動更新もある.
一通りWebアプリケーションを巡回してみたけど,色々と情報が取れた.
有償版があるみたいだが,そちらは試していない.

Spike Proxy

http://www.immunitysec.com/resources-freesoftware.shtml
衝撃.今までのものとは全然違う...
かなり硬派ですね.
Windowsの場合,ディレクトリはC:\直下じゃないとだめとか,
アプリケーションは恐らくpythonを強制終了(kill)するしか止める方法はないとか,
がREADMEに書いてある始末.
proxyの設定をするとブラウザがこのツールのインターフェイスになる.
webアプリを巡回するブラウザとこのツールを表示するのと二つ開いている必要がある.
特に管理画面の更新は動的に更新される場合と,明らかにとまっている場合があり,
その場合は自分でブラウザの画面をreloadする必要がある.
しかし,インターフェイスに慣れてくると結構使える.
ちょっとこれは後でゆっくり使いこなそう.
嬉しいのはpythonソースコードが付いて来るので,すごく勉強になる.
あとでちゃんと読むべし.
GPLなので商用に転用としている人たちはドンマイですね.
でも,やっぱりオープンソースなのはありがたい.
whygpl.txtも読むと面白いが,間違っていなければ
攻撃のDBをXMLで格納している初のツールみたいなことが書かれているような.
確かにxmlファイルは膨大なので,これを吟味するだけでも時間がかかりそう.
これはもしかしたらすごいツールかもしれない...
あとでしっかりとレビューをしよう.
Windows版はpythonがついてくるがLinuxでは先にインストールする環境にpythonとpyOpenSSLをいれるべし!

Achilles

本家はとっくになくなっていたが,
http://packetstormsecurity.org/web/に退避されている.
achilles-0-27
http://packetstormsecurity.org/web/achilles-0-27.zipにある.
2000年で開発が終わっている模様で,ドキュメントにある

System Requirements
OS: Windows 2000, Windows NT, Windows 98, Windows 95 with Winsock2
Web Browser: Tested with Netscape 4.75 and MSIE 5

が全てを物語っているだろう.
ちょっと古すぎるし,試しに動かしたらものすごく遅かった.
ちょっと使い物にならないかな...

WebScarab

あとで書く予定.
多分これが一番求めていたもの.
なんていったってオープンソースだもんね.
http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project

Inguma

http://inguma.sourceforge.net/index.php

追記2009年1月6日
Inguma (version 0.1.0 R1)では
二つのツールが追加されたとのこと

OpenDis Binary Navigator. A navigator for executables.

PCAP Fuzzer: Another interesting tool (well, a library and a tool) is
this, the PCAP based fuzzer. Record a session in one PCAP format file
and use it in your scripts to automatically fuzz every token (or every
byte) of the communication. It's good, in example, to audit propietary
network protocols.

RFuzz The Web Destroyer

http://rfuzz.rubyforge.org/

Wapiti(Web application vulnerability scanner / security auditor)

http://wapiti.sourceforge.net/

Anehta

Anehta0.6.0 -- a new XSS Attack Platform!
Anehta is an open source XSS Attack Platform which is maintained by
axis@ph4nt0m.org

Project Home: http://anehta.googlecode.com

Demo Video:
http://hi.baidu.com/aullik5/blog/item/cb4cd5899283b093a4c272a9.html

Online Demo: http://www.secwiki.com/anehta

Download: http://anehta.googlecode.com/files/anehta-v0.6.0fixed.zip

Powerfuzzer

pythonで書かれたGUIベースのfuzzer&ウェブアプリケーションスキャナ.
http://powerfuzzer.sourceforge.net
(2008年12月3日追加)

Pangolin 1.2.5.604 update

http://www.nosec.org/web/pangolin
怪しい中国産の(?)SQLインジェクションツール
(2008年12月22日に思い出して追加)

韓国産のsqlインジェクションツール WITOOL

WITOOL is an sql injection GUI tool by DotNET.

  • Target db : SQL SERVER, Oracle
  • Retrive schema : DB/TableSpace, Table, Column, other object
  • Retrive data : retrive paging, dump xml file
  • Log : View the raw data HTTP log

http://witool.sourceforge.net/
(2009年1月7日追加)

TA-Mapper: Application Penetration Testing Effort Estimator

http://www.coffeeandsecurity.com/resources/tools/tamapper.aspx
(2009年1月7日追加)

QNJXSS001.zip h-ふじた氏製 ウェブアプリ検査ツール

http://www.jumperz.net/tools/QNJXSS001.zip
(2009年1月10日追加)
みっけ。ikepyonさんのところにコメントがあったのでぐぐってみた。あとで試そう。

マイクロソフトのfuzzer(追記09/03/24)

Microsoft releases source code scanning & fuzzing tool
http://www.microsoft.com/security/msec/default.mspx
そして,このソフトのレビュー記事
http://www.snoop-security.com/blog/?p=6

HP SWFScan - Free Flash Security Tool

http://www.hp.com/go/swfscan
Adobe Flashアプリケーションの脆弱性スキャナ

Watcher v1.0.0 - silent Web-app security testing and compliance auditing

http://websecuritytool.codeplex.com/

SyhuntのFree版

たまたま思い出したので追記.
昔はSyhuntってツール名だったはずだけど,今は,SANDCATとも.Syhuntブランドは会社名のまま.
http://www.syhunt.com/
OWASPとSANSの脆弱性リストにあるものを検査してくれるツール.
ブラジル人の作ったツールでi-cynapが一度ローカライズに着手したとおもったけど.
http://internet.watch.impress.co.jp/www/article/2003/0106/icynap.htm
もしかしたら,この時に使われたツールがこれだったかもしれないし,そうでないかもしれない.覚えてない.
もしかしたら2004年のときだったかも.
SANDCAT PROが有償で普通のはトライアル版だったと思う.その辺も含めて要確認.
(2009年10月8日 追記)

Wapiti

http://sourceforge.net/projects/wapiti/

Wapiti is a vulnerability scanner for web applications. It currently search vulnerabilities like XSS, SQL and XPath injections, file inclusions, command execution, LDAP injections, CRLF injections... It use the Python programming language.

(2009-12-29追記)

CAT - Content App Tool

Web ApplicationのPenetrationテストツール.無料.まだチェックしていないが,多分Proxy型.
http://cat.contextis.com/
(2010-1-5追記)

iiScan

クラウド型のweb application security scanning platform.つまりインストールなどが必要ない!すぐに利用できる.これは確かに新しいかも.こういうのが増えていきそうです.
各種テスト・検出に使える

SQL injection
Cross Site Scripting (XSS)
File Upload Vulnerability
Information Leakage
Insecure Direct Object References
Buffer overflow
Path Traversal
OS Commanding
Session Fixation
XPath Injection

http://www.iiScan.com/
(2010年1月6日追加)

WhatWeb

http://www.morningstarsecurity.com/research/whatweb
Next generation web scannerと説明されていますが.
WAFPやWappalyzerのような,サーバで動いているアプリケーションのフィンガープリントを取得することでどのようなアプリかを特定するツールみたいです.
(2010年3月16日追加)

skipfish, an automated web app security scanner

http://code.google.com/p/skipfish/
GoogleのWebアプリセキュリティスキャナ
ratproxyがpassiveなのに対して,activeなスキャナだそうです
http://googleonlinesecurity.blogspot.com/2010/03/meet-skipfish-our-automated-web.html
(2010年3月23日追加)
とても良いまとめを発見。以下を参照の事。
http://lcamtuf.blogspot.com/2010/11/understanding-and-using-skipfish.html
(2010年12月1日追加)

Fiddler2

http://www.fiddler2.com/fiddler2/

Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.

Watcher

http://websecuritytool.codeplex.com/
passiveなsecurityスキャナ

W3AF

http://w3af.sourceforge.net/
Web Application Attack and Audit Framework

Exploit-me

http://labs.securitycompass.com/index.php/exploit-me/
XSS-Me,SQL Inject-Me,Access-Meとある

XSStest21

Fiddler2 Extension by yamagata21
http://yamagata.int21h.jp/tool/XSStest21/

XSSer

XSSer is an open source penetration testing tool that automates the process of detecting and exploiting XSS injections against different applications.

It contains several options to try to bypass certain filters, and various special techniques of code injection.

http://xsser.sourceforge.net/

Arachni - Web Application Vulnerability Scanning Framework

http://github.com/Zapotek/arachni

The Zed Attack Proxy (ZAP) version 1.0.0

penetration test tool designed to be used to make web applications more secure
https://code.google.com/p/zaproxy/




有償なものたち

学生には試せないので,せめて名前だけでもリストを作っておこうと思います.

WebProbe

WebProbe は、Webアプリケーションにおけるログイン(ユーザ認証)機能を伴う「セッション管理の脆弱性(欠陥)」を簡単な操作で検査するツールです。
http://www.softek.co.jp/Sec/WebProbe/

ソフテック、Webアプリのセッション管理脆弱性検査ツール「WebProbe」発表
http://journal.mycom.co.jp/news/2003/11/17/09.html

スキルレスなWebアプリケーション脆弱性検査ツール 「WAVI」

http://www.softek.co.jp/Release/20071024.html

SyhuntのPro版

無償のところでも書いたけど.
http://www.syhunt.com/
OWASPとSANSの脆弱性リストにあるものを検査してくれるツール.
(2009年10月8日 追記)


便利なスニッファー,スキャナ,アナライザ系

Httpanalyzer

こういうWebアプリケーションの脆弱性を確認するときに一応HTTPスニッファーを仕掛けると自分の中で問題の理解や認識が早いです
これなんか使うとチェック中のすべての攻撃リクエストとかを見ること/保存することが出来るので便利.
http://www.ieinspector.com/httpanalyzer/

nmap

zenmapのGUI版になってからさらに使いやすくなった感
ポートスキャナの定番として君臨しているツールなので使わない人も多いと思いますが,意外と最近のは高機能です.
http://nmap.org/

Scalp!

apacheのログアナライザ.
PHP-IDSのシグネチャ(別途XMLファイルをダウンロードするだけですぐ利用できる)を使って攻撃らしきものを検索してくれる.
簡単なHTMLの形でレポートを作成してくれるのでそれなりに便利.
攻撃の分類もXSSSQLインジェクション,remote file executionなどをImpact順毎に分類してくれます.
Pythonで動きます.
http://code.google.com/p/apache-scalp/

moth - vulnerable web application vmware

http://www.bonsai-sec.com/en/research/moth.php
これは,面白いかも!


研究プロジェクト

見つけるたびに追加していこうと思います

その他

http://www.webappsec.org/
ウェブアプリケーションのセキュリティに関してはこのコミュニティが一番いいかな.
メーリングリストに参加するのが一番情報が得られる.
https://www.webappsec.jp/
こんな日本のコミュニティもありますが,今の段階ではコンテンツはあまり無いようです.

あとは,なんと言ってもOWASPでしょう
Open Web Application Security Project
http://www.owasp.org/index.php/Main_Page
今後はここがメインになっていくような気はしています.

他に沢山ツールがあるので,暇を見つけてここにアップしたいと思います.
他にお勧めがありましたら是非教えてください!!

追記1(2008/11/11 19:40)

Webアプリケーションセキュリティ検査ツール

id:ikepyonさんからトラックバックを頂きました.
http://d.hatena.ne.jp/ikepyon/19000101
これ,わすれてたーー!
そうだよ,あとで試すとか前に書いておいてすっかり忘れていた.
早速明日にでも試させてもらい使用感を書かせていただきたいと思います.
ありがとうございました!!
僕にぴったりなツールだといいな・・・.期待!

追記3(2008/11/18 17:30)

最初はいわゆるVulnerability scannerを探していたのですが,
用途としては攻撃をしてくれるとさらに楽だったので,そういうツールが多くなってます.
後で調べたらこういう行為をFuzzingというみたいですね.
ブルートフォースしてみたり力ずくで脆弱性を見つけてしまう,
正規の入力を準備してから,色々入力情報を変えてからテストして変化や結果を見る,みたいな.
http://www.fuzzing.org/
日本語でもファズ・テストって言うみたい.
http://www.ibm.com/developerworks/jp/java/library/j-fuzztest.html
ここ経由http://websec-memo.blogspot.com/2007/05/my-favorite-10-web-application-security.html

http://www.dragoslungu.com/2007/05/12/my-favorite-10-web-application-security-fuzzing-tools/
なるページを見つけた.
なるほど,このトップ10に載っているFuzzing toolくらいは試してみよう.

追記5(2010/3/8)脆弱性診断の初心者にありがちな疑問をといてくれるスライドを発見

スライドにも書いてありますが

テスト方法が分からない
テスト仕様書を作れない
どこを診断してよいかわからない
脆弱性判定の基準が判らない
診断結果報告書の書き方が判らない
自社の診断を信用してもらえない

という人は一読するべし.
http://d.hatena.ne.jp/sen-u/20100223/p1
http://www.slideshare.net/uenosen/web-2010-3241609