动力文章系统任意文件删除漏洞曝光

2008-02-23 06:50:55来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

因为自己的网站连续被人恶意侵入了两次,从IIS的日志看出都是“脚本注入”惹的祸,这才开始关注脚本安全起来。前几天朋友让我检测一下他网站的安全情况,于是就试试身手,结果居然发现了关于动力文章系统的安全漏洞。

发现漏洞

朋友使用的是动力文章系统3.51版,找来找去也没有发现有哪个地方存在“注入点”,以前发现的打印页面的注入漏洞也被补上了,因为打了最新的安全补丁,也就不存在上传扩展名为CER类的ASP木马的可能了。说实在的,我是很佩服Webboy的水平,同样是教师,我就没办法写出这样优秀的网站管理系统,呵呵。

找不到注入点,就只能去找找有没有逻辑错误了。无法上传文件就试着下载文件,无法获取管理权,就试试去删除文件。我在本机上安装了同样版本动力文章系统,思路换了好几个方向,还好,发现漏洞了。存在问题的文件是User_ArticleSave.asp。

1.分析:动力文章系统有个很好的功能,在线编辑文章时可以上传文件(图片),插入文件(图片),在保存文章时,系统将检测那些已经上传的文件是否使用,如果发现某一文件名并没有出现在文章内容中,也没有被设为首页图片,就自动删除文件。这样能够保证网站的Uploadfiles目录中不会存在垃圾文件。这些文件名就存放在Uploadfiles这个隐藏的对象中。

2.疑问:如果我们手工在Uploadfiles中填入网站内某一重要的文件名,如:首页文件“/Index.asp”(使用相对网站根目录的绝对路径),递交表单时,系统检测到“/Index.asp” 并没有出现在文章内容中,也没有被设为首页图片,岂不是也会自动删除Index.asp文件?

漏洞测试

马上在本机上进行测试,成功!接下来去下载3.6版本的动力系统(最新版本),同样成功!可以说这个漏洞存在目前动力的所有系统!因为动易系统时采用安装组件的方式,感到有点烦,就没有继续测试,理论上肯定也是成功的,有兴趣的朋友可以试试。

漏洞利用过程:

(1)把添加文章的页面保存在本地;

(2)修改页面中的表单递交地址,如将“document.myform.action='User_ArticleSave.asp'”中的“User_ArticleSave.asp”改为“http://127.0.0.1/User_ArticleSave.asp(“127.0.0.1”要改为测试网站的真实网址)“,并把“”中的“hidden”改为“text”。

(3)随便填写一些必要的文字,在出现的Uploadfiles对象中填入你要删除的文件的绝对路径,如“/index.asp”。

(4)递交表单。

这里有几点需要注意的:你必须要有一个可以发表文章的账户,一般使用动力文章系统的网站都开放用户注册的;并非只有这个文件存在漏洞,其它如上传资源之类的页面也存在同样漏洞。

防范措施

防护的措施有以下几种,大家可以选择适合自己的方式:

1.关闭“删除无用的上传文件”功能,把User_ArticleSave.asp文件中的相应语句删除或用“’”注释,这样有点消极。

2.有些人首先想到的解决方法可能会是“禁止站外递交“。动力系统的管理员管理页面是有这样功能的,可以把这样的功能加在用户管理页面中,相关分析《黑客防线》前几期已经讲得很清楚了,不再重复。表面上看这种方式可以防止漏洞,其实这种解决方法不是很彻底,我至少有两种方法来重新利用这个漏洞,如捕获、修改、重新发送数据包。

3.等待Webboy的补丁,我这里先写一段代码让大家先凑合着用:

'删除无用的上传文件

if ObjInstalled=True and Uploadfiles<>"" then

dim fso,strRubbishFile

Set fso = Server.CreateObject("Scripting.FileSystemObject")

if instr(Uploadfiles,"|")>1 then

dim arrUploadfiles,intTemp

arrUploadfiles=split(Uploadfiles,"|")

Uploadfiles=""

for intTemp=0 to ubound(arrUploadfiles)

if instr(Content,arrUploadfiles(intTemp))<=0 and arrUploadfiles(intTemp)<>DefaultPicUrl then

if ucase(left(arrUploadfiles(intTemp),len(SaveUpFilesPath)))<>ucase(SaveUpFilesPath) or instr(arrUploadfiles(intTemp),"../")>0 then

response.write "

  • " & arrUploadfiles(intTemp) & "包含非法字符,已被清除!"

    Uploadfiles=""

    else

    strRubbishFile=server.MapPath(arrUploadfiles(intTemp))

    if fso.FileExists(strRubbishFile) then

    fso.DeleteFile(strRubbishFile)

    response.write "

  • " & arrUploadfiles(intTemp) & "在文章中没有用到,也没有被设为首页图片,所以已经被删除!"

    标签:

    版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

  • 上一篇:注意你的密码:哪几类密码最危险

    下一篇:网站猎手全自动带你入侵纯脚本系统