ikepyonの日記

|

2005-02-23久々に更新してみるテスト

風邪っぽいのですが、ほったらかしもなんなので、AppScanのようなWebアプリケーションセキュリティ検査ツールの進捗をば。

現在、ちみちみと進んでます。後はメインの検査、結果表示などの昨日のみって、ほとんどの部分ですが、まあ、なんとか4月ごろには公開できるものができるのではないかと。とりあえず、コーディングやってるだけなのでテストが大変なのですが・・・。ぼちぼちがんばります。

2004-12-16WebInspect続き

時間がちょっと出来たのでWebInspectをお試し中。

SQL Injection

とりあえず「'」が含まれていたらエラーメッセージを出すようなCGIを作って試してみた。

エラーメッセージ : 検出結果

ODBC Error    : SQL Injectionを検出

Error        : 何も検出せず

ORA-        : 何も検出せず

Internal Error   : 何も検出せず

MySQL Error   : 何も検出せず

DataBase Error  : 何も検出せず

もしかしてODBCエラーしか引っ掛けてないですか?それとも他の検出方法で引っ掛けてますか?

うーん。

レスポンスを調べる文字列が少なすぎると、結局全ての結果人手でチェックする必要があるのであまりうれしくないんですけど・・・もっとも、他の方法も試しているというのであれば申し訳ないけど、これとログを見る限りそんな感じはしないんですが。

2004-12-15WebInspect

暇が出来たので、WebInspectを試してみた。

よいところ

検知方法

簡単なCGIプログラムを作ってアクセスログを取ってみた。

こんな感じ

"GET /cgi-bin/hoge.bat?hoge=/../../../../../../../../../../etc/passwd HTTP/1.0" 200 70

"GET /cgi-bin/hoge.bat?hoge=|id HTTP/1.0" 200 22

"GET /cgi-bin/hoge.bat?hoge=/../../../../../../../../../../etc/passwd^^ HTTP/1.0" 200 71

"GET /cgi-bin/hoge.bat?hoge=id%00| HTTP/1.0" 200 34

"GET /cgi-bin/hoge.bat?hoge=%0a HTTP/1.0" 200 32

"GET /cgi-bin/hoge.bat?hoge=/boot.ini HTTP/1.0" 200 38

"GET /cgi-bin/hoge.bat?hoge=/etc/passwd HTTP/1.0" 200 40

:

:

:

"GET /cgi-bin/hoge.bat?hoge=;id; HTTP/1.0" 200 33

"GET /cgi-bin/hoge.bat?hoge=\\\\'/bin/cat%20/etc/passwd\\\\' HTTP/1.0" 200 57

"GET /cgi-bin/hoge.bat?hoge=`dir` HTTP/1.0" 200 34

"GET /cgi-bin/hoge.bat?hoge='%20OR HTTP/1.0" 200 35

"GET /cgi-bin/hoge.bat?hoge=char%4039%41%2b%40SELECT HTTP/1.0" 200 53

"GET /cgi-bin/hoge.bat?hoge=' HTTP/1.0" 200 30

:

:

:

"GET /cgi-bin/hoge.bat?hoge=hoe'+AND+'1'='0 HTTP/1.0" 200 44

"GET /cgi-bin/hoge.bat?hoge=hoe'+AND+'1'='1 HTTP/1.0" 200 44

"GET /cgi-bin/hoge.bat?hoge=hoe'+AND+'z'>'a HTTP/1.0" 200 22

"GET /cgi-bin/hoge.bat?hoge=hoe'+AND+'a'>'z HTTP/1.0" 200 22

"GET /cgi-bin/hoge.bat?hoge=hoe+AND+1=0 HTTP/1.0" 200 40

"GET /cgi-bin/hoge.bat?hoge=hoe+AND+1=1 HTTP/1.0" 200 40

ということなので、脆弱性のありそうなパターンを投げつけているだけである。どうも検出方法は「正常ケースと比較している」か、「結果に特定の文字列が含まれていると脆弱性があるとみなしている」のどっちかのようである。この検出方法は確かAppScanと同じはず。

てことは、どっちを使おうが検出結果にあんまし変わり映えがないかもしれない。

ということで、試そうと思ったらAppScanのライセンスが切れていたorz

結構だめっぽい?

こんな簡単なCGIXSS脆弱性すら発見してくれないんですけど・・・

@echo off

echo Content-Type: text/html

echo.

echo %QUERY_STRING%

もしかして検出方法がかなり変?

AppScanも同様のようで・・・

(12/15 22:15追記)よく考えたら、Query Stringにhoge=hoe&foo=barとしていたからかもしれない。でも、試す環境が手元にないので明日試そう。

(12/16 追記)どうも検査パターンの問題っぽい。リダイレクトとしてタグを認識しているのが原因のようだ。

2004-12-12書くことがないので

とりあえず、作成予定のWebアプリケーション検査ツールの仕様でも。

基本仕様

  1. Webブラウザと検査対象のWebサイトとの間のProxyとして稼働させる。
  2. テストモードとProxyモードを持つ
  3. Proxyモードでは、通常のProxyと同様にブラウザからのリクエストを受け取り、それをWebサーバーに中継する。この際、ブラウザから受け取ったリクエストをDBに記憶する。
  4. テストモードでは、Proxyモードで記録したリクエストを解析して攻撃パターンを総当たりで試す。その後

結果を表示する。検査パターンは別に記述したようなことを試す。

2004-12-10テストの際の補足

エラーかどうかをチェックする際には入力データのパターンを削除しないと誤検知するであろう。ものによってはエラー画面に入力データを表示したり、Hiddenフィールド等に入力データを格納したりすることがありそうである。こうなるとエラー画面なのにツールは文字データが異なるため脆弱性ありと認識しかねないのでこれは注意が必要だ。

|