人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

セキュリティについての質問です。http://www.pc462.com/mametisiki.html にあるような union select CONCAT(0x27,0x7c,0x5f,0x7c) のようなアクセスはどのような意味があるのでしょうか? このCONCAT(0x27,0x7c,0x5f,0x7c)があるとどんなことに注意しないといけないのでしょうか?

●質問者: isogaya
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● hissssa
●100ポイント

このアクセスは、いわゆるSQLインジェクションと呼ばれる類の攻撃です。データベースと連動して動作するWebアプリケーションサイトにおいて、アクセスURL内の引数にSQLデータベースのコマンドを埋め込む事で、サーバの誤動作による障害や隠された情報の取得を狙う物です。
http://ja.wikipedia.org/wiki/SQL%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3

現在のインターネットに公開されるWebサイトでは、この手のSQLインジェクション攻撃に晒される可能性は考慮されてしかるべきなので、このようにURLにコマンドを埋め込んでもデータベースに渡す前にチェックするのが当然になっています。よってきちんと作られたサイトなら何も起こりませんが、作りの甘いサイトだとチェックが充分でなく、障害や漏洩に繋がる場合が存在します。

ただ、この「union select CONCAT(0x27,0x7c,0x5f,0x7c)...」というアクセスは、SQL文の体をなしていません。CONCATという関数は多くのSQLサーバソフトで対応していますが、CONCAT(0x27,0x7c,0x5f,0x7c)という記述は、OracleやMS-SQLだと単にエラーになります。MySQLなら「'|_|」という文字列に置換されて処理されますが、これだけでは単にデータベースアクセスがエラーになるだけで、たとえチェックの甘いサイトでも特に障害や情報漏洩には繋がりません。

おそらくは、SQLインジェクション攻撃を行おうとして失敗した例ではないかと思われますが、あるいはこの攻撃を多数のサイトに送りつけてエラーの出方を調べることで、セキュリティチェックの甘そうなサイトを探す目的なのかも知れません。


isogayaさんのコメント
言葉たらずですみません。SQLインジェクションはわかっています。CONCAT云々の意味がしりたいのです。複数のサイトでこのアクセス事例が報告されるので、なんだろうと思った次第です。

hissssaさんのコメント
回答の後半に書いていますが、CONCATはSQLの関数です。引数に与えた文字列を結合する関数ですが、このCONCAT(0x27,0x7c,0x5f,0x7c)自体はSQLとして意味を成しません。 そもそもOracleやMS-SQLではCONCATの引数は2個までなので、確実にエラーになります。MySQLなら複数の引数に対応していますので関数のエラーになりませんが、それでも「'|_|」という文字列になるだけです。これだけだとSQL構文としては明らかに異常なので、どちらにしても文法エラーになります。 ただ、エラーの出方はDBサーバソフトによって変わる可能性がありますので、多くのサイトに送りつけることで、誰かが特定のサーバを使っているサイトを調べようとしたという事はあるかも知れません。あるいは、たまたまどこかのサイトでこの攻撃で突かれる穴を持ったサイトがあり、同じ攻撃が通用するサイトを探そうとしたという事もあるかもしれません。 いずれにしても、WebサーバやSQLサーバの一般的な脆弱性を突く類の攻撃ではないのは確実です。普通にSQLインジェクション対策されているサイトなら、特に注意するようなことはないと思われます。

hissssaさんのコメント
失礼しました。確認してみたらMS-SQLではそもそもCONCATという関数は実装されていませんでした。ますます攻撃としては無意味という事になりますが。

fiwaさんのコメント
ここに"Odd SQL Injection Attack"(奇妙なSQLインジェクション攻撃)というエントリを書かれている方がいました。 http://secshoggoth.blogspot.jp/2009/03/odd-sql-injection-attack.html ここでもInjectionの文字列はまったく意味をなさないので、だいたいhissssaさんと同じような結論になったようです。 1. サイトの脆弱性を見るためにSQLエラーを起こすことを意図したものか。しかしそれなら短期間になぜこんなに大量に送りつける必要があるのか? 2. 攻撃者はIDS/IPSを避けようとしたがミスをした 3. 攻撃者は自分がやろうとしていることが全くわかっていない
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ