经测试,动力3.51同样存在着严重漏洞,请使用者尽快打补丁
昨天看了 redsen 发的帖子:
dispbbs.asp?boardid=34&star=1&replyid=46493&id=55222&skin=0&page=1
我下了个该自由动力,测试了下,果然如此。
后来又想,动力3.51会不会同样存在该漏洞呢?查看了下Upfile_Soft.asp代码,结果是一样存在上传漏洞。
为了证明结论正确性,我在搜索引擎里找了下,结果MyPower Ver3.51 站点出来一大堆,随便找了个测试,下面是详细过程,为了避免不必要麻烦,已经屏蔽图片中的网址,请读者见谅:
用到的工具:WinSock Expert 、UltraEdit、NC和ASP后门
1,注册用户名 test111,进入 个人信息控制面板
此主题相关图片如下:

此主题相关图片如下:

2,开启WinSock Expert 监视,并且随便上传个ASP后门,结果是“无法上传,…”,预料中的事,没关系:
此主题相关图片如下:

3,将WinSock Expert 捕获的数据,复制到文本文件,并且用UltraEdit修改其中的关键代码:filename="C:\test\webshell.asp" ,webshell.asp后加:1个空格及.rm,然后修改16进制的20为00,Content-Length 长度增加4。
此主题相关图片如下:

此主题相关图片如下:

此主题相关图片如下:

4,这时NC派上场了:
此主题相关图片如下:

5,上传马成功,得到了个webshell:
此主题相关图片如下:

此主题相关图片如下:

此主题相关图片如下:

最后说明下,本人没有破坏该网站的任何数据,并且测试完后,删除了全部木马,同时告诉了他们网站管理员。
修补此漏洞方法:
一,见dispbbs.asp?boardid=34&star=1&replyid=46493&id=55222&skin=0&page=1
此方法使得用户上传的文件全部按照程序自动命名。
|
修改Upfile_Soft.asp 代码 ,找到
if FoundErr<>true then FileName=SavePath & ofile.FileName If IsObjInstalled("Scripting.FileSystemObject") Then dim fso set fso=CreateObject("Scripting.FileSystemObject") if fso.FileExists(Server.mappath(FileName)) then randomize ranNum=int(900*rnd)+100 filename= end if set fso=nothing end if
ofile.SaveToFile Server.mappath(FileName) '保存文件
改为
if FoundErr<>true then randomize ranNum=int(900*rnd)+100 filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt
ofile.SaveToFile Server.mappath(FileName) '保存文件
即可解决。(此修改由网友coolsun提供)。
也就是删除如下内容:
FileName=SavePath & ofile.FileName If IsObjInstalled("Scripting.FileSystemObject") Then dim fso set fso=CreateObject("Scripting.FileSystemObject") if fso.FileExists(Server.mappath(FileName)) then (有人提出是否安全了,本人没有对此进行测试,但从代码上分析,不再从本地获取文件名,而是按时间加随机数生成文件名,应该补上了漏洞) |
二,我自己写了个过滤文件名的函数,测试可以防止上面的漏洞攻击,请高手看看有没有什么问题:
此方法可以保留用户上传的文件名。
Upfile_Soft.asp 找到
FileName=SavePath & ofile.FileName
下增加:
'检查文件中是否含有非法字符
FileName=ChkFileName(FileName)
然后在文件最尾部
%>
上增加:
'作 用:检查文件中是否含有非法字符,防止用户构造数据欺骗计算机
Function ChkFileName(FileName)
If IsEmpty(FileName) Then Exit Function
FileName = Lcase(FileName)
If Instr(FileName,".") <> InstrRev(FileName,".") Then
msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType
FoundErr=true
strJS="<SCRIPT language=javascript>" & vbcrlf
strJS=strJS & "alert('" & msg & "');" & vbcrlf
strJS=strJS & "history.go(-1);" & vbcrlf
strJS=strJS & "</script>" & vbcrlf
Response.Write strJS
Response.End
End If
ChkFileName = Replace(FileName,Chr(0),"")
End Function
%>
测试结果图:
此主题相关图片如下:
