动易网站管理系统Count\Counter.asp页面存在SQL注入漏洞

2007-11-17T00:00:00
ID SSV:2451
Type seebug
Reporter Root
Modified 2007-11-17T00:00:00

Description

动易网站管理系统是一个采用 ASP 和 MSSQL 等其他多种数据库构建的高效网站内容管理解决方案产品。 Count\Counter.asp文件第19行 ``` Mozilla=replace(Request.ServerVariables("HTTP_USER_AGENT"),"'","") Mozilla=left(Mozilla,100) Agent=Request.ServerVariables("HTTP_USER_AGENT") Agent=Split(Agent,";") BcType=0 If Instr(Agent(1),"U") Or Instr(Agent(1),"I") Then BcType=1 If InStr(Agent(1),"MSIE") Then BcType=2 Select Case BcType Case 0: Browser="其它" System="其它" Case 1: Ver=Mid(Agent(0),InStr(Agent(0),"/")+1) Ver=Mid(Ver,1,InStr(Ver," ")-1) Browser="Netscape"&Ver System=Mid(Agent(0),InStr(Agent(0),"(")+1) case 2: Browser=Agent(1) System=Agent(2) System=Replace(System,")","") End Select System=Replace(Replace(Replace(Replace(Replace(Replace(System," ",""),"Win","Windows"),"NT5.0","2000"),"NT5.1","XP"),"NT5.2","2003"),"dowsdows","dows") Browser=Replace(Browser," ","") System=Left(System,20)

Browser=Left(Browser,20) 我们看到Agent没有经过过滤,只用’;’分割,判断了 Agent(1)是不是包含了"MSIE"就把BcType的值设置为2,于是Browser=Agent(1) ,在后面进行了替换Browser中的空格,而且只取前20个数据,在第302调用AddNum过程: AddNum Browser,"PE_StatBrowser","TBrowser","TBrwNum" ``` 343行的AddNum过程如下:

Sub AddNum(Data,TableName,CompareField,AddField) Dim RowCount conn_counter.execute "update "&TableName&" set ["&AddField&"]=["&AddField&"]+1 where "&CompareField&"='"&Data&"'", RowCount If RowCount = 0 Then conn_counter.execute "insert into "&TableName&" ("&CompareField&",["&AddField&"]) values ('"&Data&"',1)" End Sub 可以看出Data是没有经过任何过滤就放入了数据库的。于是注入成立。

测试方法:由于Browser限制了20个字符,除去必须有的字符和闭合,就只有13个字符(纯语句)可以利用。可以执行 MSIE’WHERE USER=0—得到当前数据库的用户名

动易网站管理系统 对于没有做好过滤的部分,进行严格的过滤以及修补工作。