-2

SQL Server 2008 r2 で実行されているデータベースがあります。一部の列の値に問題があります

一部のフィールド値は自動的に更新されることに注意しました。

次のようなデータが含まれています。

  • 元の値12345
  • 汚い値12345<div style="display:none">why do husband cheat <a href="http://blog.businessdating.com/page/How-women-cheat">wifes that cheat</a> why do men cheat on their wife</div>

これがどのように発生するのか、またどのような攻撃なのかわかりません。私のアプリケーション コード (ASP.Net WebForms アプリケーション)には更新ステートメントがなく、感染した列の一部はクライアント入力から読み取られませんが、それらは外部キーであり、その値はデータベースから読み取られるため、そのような汚れを入れる方法はありません。それらの値。

4

1 に答える 1

2

これは SQL インジェクション攻撃だと思います。

SQL インジェクション攻撃の要点は、任意の SQL コマンドを実行する単一の弱点を見つけることです。挿入/更新/削除/選択クエリのいずれかで Web からの入力を受け入れていて、パラメーター化されたクエリを使用していない場合、攻撃者はデータベース内の任意のテーブルにアクセスして、好きなように操作できます。

詳細がなければ、それがどのように機能したかを正確に判断するのは困難です.インターネット上には同じ URL を持つページがたくさんあり、それらはすべてサフィックスとして .asp を使用しているため、スクリプトのように見えます.

ASP 構文を覚えるには時間がかかりすぎましたが、試してみます。また、これを読みやすくするために HTML エンコーディングを気にすることもありません。

例として、製品について調べることができるページがあるとします。

http://myapp.com/customers.asp?productID=1

そのページがサーバーにヒットしたら、SQL 文字列を作成します。

Select * from products where productID = & request.productID

そして、それを実行して、ページに結果を表示します。

通常の場合、SQL リクエストはSelect * from products where productID = 1

攻撃者は次のように URL を操作する可能性があります。

http://myapp.com/customers.asp?productID=1 union sp_help

これはあなたが実行することを意味します

Select * from products where productID = 1
union
sp_help

結果の Web ページに結果を表示します。sp_help の結果を製品データの列と一致させるには、多少の試行錯誤が必要ですが、最終的に攻撃者は完全なデータベース スキーマを取得します。

攻撃者がデータを操作したい場合は、次のようなことを行う可能性があります

http://myapp.com/customers.asp?productID=1; update lookupTable set description = description  + '<div style="display:none">why do husband cheat <a href="http://blog.businessdating.com/page/How-women-cheat">wifes that cheat</a> why do men cheat on their wife</div>'
于 2015-09-01T10:47:01.887 に答える