フロントエンドとしてクラシック ASP、バックエンドとして SQL Server 2005 として Web サイトを持っています。
しかし、バックエンドで非常に奇妙な SQL インジェクションに直面しています。
スパム サイトを使用した HTML を使用したある種の CSS は、各テーブルと各 varchar タイプの列を使用して、コードを Web サイト データベースに追加しています。
例えば
</title><style>.am1y{position:absolute;clip:rect(405px,auto,auto,405px);}</style><div class=am1y>same day <a href=http://mazzpaydayloans.com >payday loans</a></div>
IIS ログを確認したところ、次のように表示されました
2013-06-09 19:15:54 GET /mypage.asp%3C/title%3E%3Cstyle%3E.axo5{position:absolute;clip:rect(404px,auto,auto,404px);}%3C/スタイル%3E%3Cdiv%20class=axo5%3Eapproval%20%3Ca%20href=http:/mazzpaydayloans.com%20%3Epayday%20loans%3C/a%3E%3C/div%3E - - 204.13.205.99 HTTP/1.1 Mozilla /4.0+(互換;+MSIE+6.0;+Windows+NT+5.1;+SV1) loginfailure=chance=0&bantime=;+ASPSESSIONIDSSDRRCQQ=EDPHPJGCGLMKOADICKHODKBM - www.mysite.com 404 0 281 543 78
この選択した ASP ページでは、すべての SQL クエリがパラメータ化されています。
しかし、それでもこの問題は解決しません。
MyPage.asp コード
new_prot = "http"
new_https = lcase(request.ServerVariables("HTTPS"))
if new_https <> "off" then new_prot = "https"
new_domainname = Request.ServerVariables("SERVER_NAME")
new_filename = Request.ServerVariables("SCRIPT_NAME")
set cm1 = Server.CreateObject("ADODB.Command")
cm1.ActiveConnection = conn
cm1.commandtype=1
cm1.CommandText ="select * from Table1 where Web=?"
cm1.prepared=true
dim weburl
set weburl=cm1.createparameter(Web_URL,200,,5000)
weburl.value= Server.HtmlEncode(ltrim(rtrim(new_filename)))
cm1.parameters.append weburl
set Mobile = cm1.execute(RecordsAffected,,adCmdText)
do until Mobile.EOF
response.redirect(Mobile.fields("mob"))
loop