发新话题
打印

[转载]动力3.6 漏洞利用过程

[转载]动力3.6 漏洞利用过程

信息来源:http://www.77169.com/Article/Cla ... 200409/11650_1.html

值得一提的是,上面那个网站是  中国 XX 开发XX,1个专业的VB编程站点。狂晕的是,他们论坛还在用着Dvbbs Version 6.0.0  ,如果我没估计错误的话,应该论坛还存在着漏洞,晚上测试下。

晚上测试结果:论坛同样存在上传漏洞,原因是6。0的上传文件中:

filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt


formPath没有做挂虑,这样如果自己构造数据包  formPath=UploadFile/shell.asp'\0 ',那么后面的字符将多余,原因事 计算机 遇到'\0'字符,认为字符串结束了



我下了个该自由动力,测试了下,果然如此。

后来又想,动力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。

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)  &#39;保存文件


改为

  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)  &#39;保存文件


即可解决。(此修改由网友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

下增加:


  &#39;检查文件中是否含有非法字符
  FileName=ChkFileName(FileName)


然后在文件最尾部

%>

上增加:

&#39;作  用:检查文件中是否含有非法字符,防止用户构造数据欺骗计算机
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(&#39;" & msg & "&#39;);" & 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
%>

测试结果图:


此主题相关图片如下:

TOP

发新话题