天外流星 发表于 2004-5-24 22:09:00

论坛管理员来看看吧

打开下面这个连接
http://bbs.echot.net/UploadFace/20045242285039363.gif

煎饼 发表于 2004-5-24 22:15:00

谢谢你,请和我联系一下

天外流星 发表于 2004-5-25 11:40:00

上传文件之后把首尾的代码去掉不就这样了吗,呵呵,晕 {仅仅是引起注意而已}

问题是, 这个 ASP 文件怎么上传进来的,而且被错误的执行为 gif 文件,如果这个asp带有病毒的话,就会有很多电脑受害。

我也不知道怎么解决,联系我也没用,反正这是动网论坛上传文件的漏洞,你编程水平很高的话自己修改原代码吧,或者等待动网论坛的官方补丁,相信很快就出来了


edge005 发表于 2004-5-25 12:07:00

晕,这样都行,煎饼遇到难题了呵

我累了 发表于 2004-5-25 12:21:00

设置一下 uploadface 不能执行程序就好了

超帅 发表于 2004-5-26 05:55:00

没那么简单!直接把这个uploadface 删除了

我累了 发表于 2004-5-26 12:02:00

设置过权限之后就不能执行程序了,html没有什么用

gun 发表于 2004-5-27 13:51:00

好象在哪本书上介绍过!
动网6.0 6.1 都有这个漏洞!
如果构造下 javascript代码还可能会得到会员和管理员的cookie,这个听起来很可怕啊!

hzzh 发表于 2004-5-27 15:46:00

这个是动网论坛的上传文件漏洞
主要问题出在asp无组件上传的代码中,以下这一句上
filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt
这句话将一段字符串合并起来,生成保存的文件名filename,formPath是表单提交的变量。
如果设法构造formPath:在计算机中检测字符串的关键就是看是否碰到'\0'字符,如果是,则认为字符串结束了.也就是说我们在构造上传文件保存路径时,只要欺骗计算机,让他认为类似"uploadface\zwell.asp"这样的路径参数已经结束了,这样,后面一连串的时间字符我们都可以不要,从而达到直接将文件保存为我们定义的文件名的目的。
因此,在构造的POST数据包中,将表单中的filepath改成类似uploadface\zwell.asp'\0'的字符串然后发送出去就行了。
也就是说,恶意提交的formPath中只要包含'\0',filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt语句得到的
filename就只有formPath了,后面的&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt部分都给丢弃乐,因此可以随意生成.asp等文件了。
解决方法,我想在filename=之前,先对formPath的内容进行过滤,把'\0'改成空格什么的,就可以防止这个漏洞了。asp我不熟悉,不知对'\0'检测用什么语句可以
关于这个漏洞的详细说明,见http://www.xfocus.net/articles/200405/700.html

雨中蝎子 发表于 2004-5-28 10:25:00

偶八是斑竹,先闪过。。。。

yzhlinux 发表于 2004-5-28 17:55:00

呵呵,一个不大不小的漏洞,不过这个也不是用javascript可以利用的,要写socket程序才可以利用。

gun 发表于 2004-5-28 19:26:00

呵呵~!

这个问题应该说比较严重!

稍不注意就会泄露cookie,被人利用!


[此贴子已经被作者于2004-5-28 19:30:37编辑过]

hzzh 发表于 2004-5-28 22:03:00

以下是引用yzhlinux在2004-5-28 17:55:55的发言:
呵呵,一个不大不小的漏洞,不过这个也不是用javascript可以利用的,要写socket程序才可以利用。

如果先用sniff软件抓出正常POST数据,稍作修改,保存为aa.txt
然后telnet IP 80 <aa.txt
就可以利用这个漏洞上传文件了 ,不用编写程序 ^^)

我累了 发表于 2004-5-30 16:55:00

找到post_upfile.asp、upfile.asp、z_visual_upfile.asp、NF_visual_upfile.asp、saveannouce_upfile.asp等上传文件(包括所有插件中的上传文件)

查找文件中的代码:
FileExt=Lcase(File.FileExt)
'判断文件类型
If CheckFileExt(FileExt)=false then
    Response.write "文件格式不正确,或不能为空 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
   EXIT SUB
End If

将其中的
FileExt=Lcase(File.FileExt)

替换为下面代码:

FileExt=FixName(File.FileExt)

formPath= Replace(Replace(formPath,Chr(0),""),".","")

下面的代码放在asp文件的最后 "%>"前
Function FixName(UpFileExt)
If IsEmpty(UpFileExt) Then Exit Function
FixName = Lcase(UpFileExt)
FixName = Replace(FixName,Chr(0),"")
FixName = Replace(FixName,".","")
FixName = Replace(FixName,"asp","")
FixName = Replace(FixName,"asa","")
FixName = Replace(FixName,"aspx","")
FixName = Replace(FixName,"cer","")
FixName = Replace(FixName,"cdx","")
FixName = Replace(FixName,"htr","")
      FixName = Replace(FixName,"php","")
End Function


hzzh 发表于 2004-5-30 17:32:00

我认为主要应该对提交的文件全路径filepath进行过滤
例如提交一个uploadface\aaa.asp+'\0'+.jpg 文件,从文件的扩展名File.FileExt得到的是合法的.jpg文件类型,但是利用漏洞上传后,产生为aaa.asp 非法文件,则才是这个漏洞的关键。

‘我累了‘前面提到的禁止uploadface目录的执行和脚本权限也许可防范。

不过不知道Dvbbs 是否对上传的路径进行了限定,否则把filepath改成"c:/winnt/aa.exe+'\0'+.jpg 或者../../../aa.exe+'\0'+.jpg 什么的,这洞就有点大了

[此贴子已经被作者于2004-5-30 17:43:02编辑过]
页: [1]
查看完整版本: 论坛管理员来看看吧