gpt4 book ai didi

sql-server - 对经典 ASP 的脚本攻击

转载 作者:行者123 更新时间:2023-12-03 23:58:32 25 4
gpt4 key购买 nike

我的网站作为前端使用经典 ASP,作为后端使用 SQL Server 2005。

但是我的后端面临一个非常奇怪的 SQL 注入(inject)。

某些类型的带有 HTML 的 CSS 和垃圾邮件网站正在将它们的代码附加到我的网站数据库中,每个表和每个 varchar 类型的列。

例如

</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/style%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+(compatible;+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

最佳答案

首先,您的查询可能已参数化,但您需要实现一个存储过程,而不是直接的 SQL 命令。

set cm1 = Server.CreateObject("ADODB.Command")
cm1.ActiveConnection = conn
cm1.commandtype=1
cm1.CommandText ="select * from Table1 where Web=?"

命令文本是不行的

你需要实现一个存储过程:

CREATE ProcTable 
@ParamWeb INT
as

SELECT * FROM Table WHERE PAgeID = @ParamWeb

然后执行程序。这可以防止注入(inject),因为页面只能接受过程的数值,并且只会返回相关的数据集(空的或有行的)

你的命令文本可以有

"; any injection script you want" 

附加

任何注入(inject)脚本都可以包含 sqlcmdShell,所以一旦注入(inject)完成,坏人就可以返回表的列表、它们的内容、用户、用户数据等等

关于sql-server - 对经典 ASP 的脚本攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17038315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com