web-dev-qa-db-ja.com

私のサイトはSQLインジェクション攻撃に見舞われました。どうすれば彼らが何をしていたかわかりますか?

そのため、私のサイトのページ(PHPニュースレターの記事を表示するページ)はSQLインジェクションに対して脆弱であり、ヒットしました。CPU負荷を引き起こすのに十分なデータベースクエリを実行していたため、ページが見つかりましたデータベースサーバーにスパイクが発生しました。ApacheログからIPアドレスを実行しているIPアドレスが少なくともいくつか見つかり、ファイアウォールでブロックされました。少なくとも、ページを強化しました。彼らが実行していたクエリ、それらはかなりうまく隠蔽/エスケープされたこれは私がApacheログで見つけたクエリ文字列です:

?id = 742%2F-%2F%2F!30000and(select%2F-%2F1%2F-%2Ffrom(select%2F-%2Fcount()%2Cconcat((select%2F-%2F( select%2F-%2F(select%2F-%2Fconcat(0x27%2C0x7e%2Cunhex(Hex(cast(sbamail.email%2F-%2Fas%2F-%2Fchar)))%2C0x27%2C0x7e)% 2F-%2Ffrom%2F-%2Femail.sbamail%2F-%2Flimit%2F-%2F284079%2C1)%2F-%2F)%2F-%2Ffrom%2F-%2Finformation_schema.tables% 2F-%2Flimit%2F-%2F0%2C1)%2Cfloor(Rand(0)2))x%2F-%2Ffrom%2F-%2Finformation_schema.tables%2F-%2Fgroup%2F-% 2Fby%2F-%2Fx)a)%2F-%2Fand%2F-%2F1%3D1%2F

これは、クエリを実行するためにデータベースが表示していたものです。

newsletter_articlesからタイトルを選択します。article_id= 2010 /-//!30000and(select /-/ 1 /-/ from(select /-/ count()、concat((select /-/(select /- /(select/--/concat(0x27,0x7e,unhex(Hex(cast(sbamail.email/--/as/--/char))),0x27,0x7e)/--/from/--/email .sbamail /-/ limit /-/ 119488,1)/-/)/-/ from /-/ information_schema.tables /-/ limit /-/ 0,1)、floor(Rand( 0)2))x /-/ from /-/ information_schema.tables /-/ group /-/ by /-/ x)a)/-/ a​​nd /-/ 1 = 1 /

(両方とも、マイナーなパラメーター変更で繰り返されるAd nauseam)そのクエリをMySQLに貼り付けようとすると、構文エラーが発生します。

実際にそのクエリ文字列を影響を受けるページに貼り付けたとき(パッチする前)、次のように表示されます。

キー 'group_key'の重複するエントリ '' [email protected]'~1 '

「重複エントリ」ビットは本当に私を心配させているものです。最初はメールアドレスの直後だと思っていました(幸い、このデータベースにはパスワードが保存されていません)。それは以前に他のページで起こり、私が見ることができるのは「select」ステートメントだけですが、それらが挿入/更新/削除できた場合、それははるかに悪いニュースです。彼らがやっていたことをどうやってアンエスケープ/デコードできますか?慌てて、バックアップからデータベースを復元することを検討すべきですか?

問題のページは、それがまったく関連がある場合、かなり基本的なLAMPスタックにあります。フレームワークも何もありません。

9
joshg

最初に、mysqlユーザーが [〜#〜] file [〜#〜] 特権を持っているかどうかを確認する必要があります。その場合は、システムが完全に危険にさらされていると考えてください。

エラー「重複したエントリ」とともに提供したインジェクションは、 エラーベースのSQLインジェクション の明確な例です。

PHPのmysql_queryは複数のクエリをサポートしていないため、アプリケーションの選択クエリから挿入/更新/削除することはできません。しかし、アプリケーションにSQLインジェクションに対して脆弱な挿入/更新/削除クエリがある場合(これは非常に可能性があります)、データベースを改ざんする可能性があります。

6
Zzz