ページ内ジャンプ:

アレゲなニュースと雑談サイト

hylomによる 2008年10月30日 13時51分の掲載

Anonymous Coward曰く、

以前/.で話題になったクッキーを使ったSQLインジェクションについて、詳細が日経IT-PLUSで解説されている

記事によると、今回判明したSQLインジェクション攻撃はASPやASP.NET、PHPなどでCGIがデータを受け取る際に使用する関数の仕様を突いたものだそうだ。たとえばASPでは「Request("引数名")」という関数でGET/POSTに関係なくCGIに渡されたデータを取得できるが、この際にcookieとして渡された情報も取得対象となってしまう(たとえば、Request("data1")という関数を呼び出した際、GETもしくはPOSTでdata1というデータが送信されず、さらにdata1という名前のcookieが存在した場合、そのcookieの値が取得される)。

これを利用すると、cookieとして送信したデータを、CGI側ではGET/POSTで送信されたもののように扱わせることができる。侵入検知システムなどが導入されている場合、不正なGET/POSTについてはブロックできるようになっていることが多いが、cookieについては見落とされていることが多いため、これにより不正なリクエストを侵入検知システムにブロックされずに送信できるようになる。

また、SQLインジェクションに利用される文字列に「%」を埋め込むことにより、侵入検知システムをくぐり抜けるテクニックも使われていたそうだ。「%」は通常、URLエンコードで用いられるキーであるが、IIS/ASPでは無効な%(%のあとの2文字に0~9およびA~F以外の文字が含まれる)際には%を無視する仕様がある(たとえば「DEC%LARE」という文字はIIS/ASPでは「DECLARE」と認識される)。これを利用して、侵入検知システムをだますことも可能になる。

また、記事内ではPOSTやcookieを使った攻撃は内容がWebサーバーのログに残りにくいため、痕跡が残りにくいという(攻撃者にとっての)メリットもあるとのことだ。

関連ストーリー

表示オプション しきい値: