频道栏目
首页 > 资讯 > 网站安全 > 正文

对《发掘就爱设计V7完整版漏洞及修复》一文的补遗

11-01-15        来源:[db:作者]  
收藏   我要投稿

文/图  Cool_wXd
   看了 《发掘就爱设计V7完整版漏洞》后,感觉作者的思路很好,但作者在实践过程中有些不足,主要是因为作者在网上实战时暴库不成功,但却因为是默认的数据库而导致一句话木马插入成功,总感觉有些幸运的成分,于是就从网上下载了这套程序自己分析一下,也有了一些收获,就在这里和大家分享一下。
   作者在文中已经写过的漏洞这里就不提了,下面我们具体看看其他的漏洞吧!首先说一下程序的上传漏洞,该漏洞存在于upfile.asp文件中,部分代码如下。
set file=upload.file("file")
If file.filename<>"" then  限制文件格式
fileExt=getExt(file.filename)
Forum_upload="gif,jpg,jpeg" 
Forumupload=split(Forum_upload,",")
for i=0 to ubound(Forumupload)
if fileEXT=trim(Forumupload(i)) then
uploadsuc=true
exit for
else
uploadsuc=false
end if
Next
if uploadsuc=false then
response.write "<font size=2>文件格式受限制[<a href=# onclick=history.go(-1)>请重新上传</a>]</font>"
response.end
end If

if file.filesize>0 then
if file.filesize>1000*500 Then 限制图片上传大小
response.write "<font size=2>图片大小超过了限制[<a href=# onclick=history.go(-1)>重新上传</a>]</font>"
response.end
end If
uploadsuc=false
end if

filename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&file.FileName
path="UpFile/friends/"&FileName
Response.write path
Response.end
if file.FileSize>0 then
如果 FileSize > 0,说明有文件数据
file.SaveAs Server.mappath(formpath&filename)  保存文件
end If
Else
path=""
End If
Response.Write "<script>parent.add.title.value="& Replace(file.filename,"."&fileExt,"") &"</script>"
Response.Write "<script>parent.add.pathsmall.value=UpFile/"& upFolder &"/"&filenameS&"</script>"
Response.Write "<script>parent.add."& inputName &".value=UpFile/"& upFolder &"/"&FileName&"</script>"

看到这段代码朋友们会想到什么方法呢?就是截断上传了,也就是动网论坛最初出现上传漏洞的利用方法。下面我们就具体操作一下。在“跟我交往中”选择我们的ASP木马文件,我这里是diy.asp,用WSockExpert抓包(注意,这里一定要上传ASP木马文件抓包,否则在使用NC提交的时候会显示验证码错误),如图1所示。

图1
请大家注意,这里我是将后面的注释去掉了,所以能显示木马的路径,但程序中作者却是把上传以后输出回显语句给注释掉了,正常数据包返回的信息如图2所示。
图2
因为上传以后文件命名是按照filename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&file这种时间+木马文件名.asp的方式的,所以我们找不到我们的木马了!针对这个问题,我的想法是类似字典的方法。按照常规思想,服务器的时间应该和我们本地的时间差不多的(这里排除国外服务器等其他苛刻条件),于是我编写了一个小程序,如图3所示,可以生成一个列表,然后使用阿D的SQL注入工具找后台的原理就可以找到我们的木马了!其中查找目录为http://www.xxx.com/UpFile/friends/下。但是这种方法比较笨,生成的列表可能数量会很多,不过速度还是可以的,暂时我能想到的就是这个方法了,如果大家有什么新的想法的话,请一定记得告诉我!结果如图4所示,这样我们就可以获取WebShell了!
图3
图4 
接下来我们再看看跨站漏洞!说到跨站,就不得不说一下程序中用到的字符串操作函数HTMLEncode了,其代码如下。
function HTMLEncode(fString)
if not isnull(fString) then
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, CHR(32), " ")
fString = Replace(fString, CHR(9), " ")
fString = Replace(fString, CHR(34), """)
fString = Replace(fString, CHR(39), "")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "  ")
fString = Replace(fString, CHR(10), "  ")
HTMLEncode = fString
end if
end function

在跨站这方面,《发掘就爱设计V7完整版漏洞》一文的作者没有介绍到位,因为有些变量还是没有经过HTMLEncode函数过滤的,也就是说,我们还是可以利用用户提交数据来构造跨站语句的。我们来看看“关于”中的“跟我交往”中涉及到的代码。
 
name=reStr(Upload.Form("name"))
sex=reStr(Upload.Form("sex"))
age=reStr(Upload.Form("age"))
profession=reStr(Upload.Form("profession"))
area=reStr(Upload.Form("area"))
qq=reStr(Upload.Form("qq"))
msn=reStr(Upload.Form("msn"))
email=reStr(Upload.Form("email"))
tel=reStr(Upload.Form("tel"))
codes=reStr(Upload.Form("codes"))
line 105-114
rs("name")=name
rs("sex")=sex
rs("age")=tolong(age)
rs("profession")=profession
rs("area")=area
rs("qq")=qq
rs("msn")=msn
rs("email")=email
rs("tel")=tel
rs("photo")=path
 
这段代码通过函数reStr来获取参数,这个函数的代码如下:
Function reStr(str)
reStr=Replace(Trim(str),"","")
End Function
过滤了两边空格,并替换单引号,这样就能防住我们跨站吗?看看效果!当管理员登录后台点击“跟我交往”的链接后,就会弹出我们的跨站代码了,如图5所示。这里我们以地区跨站为例子,其他的限制了长度的可以利用本地提交的方式实现!

图5
 
由于这套系统的后台过于简单,管理员添加和数据库的相应操作都没有,所以后台得到了也没有什么太大的用途,无非是添加一些链接罢了。关于这套系统我们就分析到这里,本文主要说了上传和跨站两个漏洞,但我想利用价值还是有的,希望大家不要利用漏洞去做坏事

相关TAG标签
上一篇:华夏外挂下载系统2.0漏洞解析
下一篇:某IDC服务器 从入侵提权谈主机防御
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站