设为主页 | 加入收藏 | 繁體中文

动网--乾坤大挪移大法

  动网--乾坤大挪移大法
  漏洞泉源:DVBBS V6.0,V6.1 For 任何版. 
  发现漏洞日期:2003-12-21
  测试目标: 内部局域网机子.win2k,DVBBS For ACCESS V6.1
  开场白:
  起首,这不是一篇小说,这是一篇技能性的文章,一个关于怎么发现这个脚本漏洞,利用漏洞,以及体现它最大利用代价的文章.
  固然最后我们也给出了安全补丁。这个漏洞,比AK47好坏,他能杀人于有形中。 网管基础找不就任何日记。其终极结果,我们可以摧毁
  他的主页,让论坛关门,也可以间接下载他的数据库。这便是我本日要为各人介绍的:动网--乾坤大挪移大法之要饭版.
  乾坤大挪移大法的法门和一般的脚本法门不一样,他深藏在动网的两个脚本文件当中,这里我只介绍一个就行了。另一个文件各人看了
  这篇文章天然就明确了.固然自己也能找到得另一个文件咯.
  一、探求乾坤大挪移大法
  打开动网论坛脚本文件:MYMODIFY.ASP让我们来找吧.
  代码如下:
  ......
  sub update()
  ......
  '对上传头象进行过滤与更名
  If Cint(Dvbbs.Forum_Setting(7))=1 Then
  On Error Resume Next
  dim objFSO,upfilename,newfilename
  dim upface,memberid
  set rs=conn.execute("select userid,face from [user] where userid="&Dvbbs.userid)
  memberid=rs(0)
  upface=trim(rs(1))
  newfilename=""
  upfilename=split(upface,"/")
  if ubound(upfilename)=1 and upfilename(0)="uploadFace"  then
  if  instr(upfilename(1),"_")=0 then
  newfilename="uploadFace/"&memberid&"_"&upfilename(1)
  Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
  if objFSO.fileExists(Server.MapPath(upface)) then
  objFSO.movefile ""&Server.MapPath(upface)&"",""&Server.MapPath(newfilename)&""
  end if
  If Err.Number = 0 Then
  Conn.Execute("update [user] set face='"&replace(newfilename,"'","")&"' where userid="&Dvbbs.userid)
  end if
  set objFSO=nothing
  end if
  end if
  rs.close
  set rs=nothing
  end if
  '对上传头象进行过滤与更名竣事
  'AV女优AV女优AV女优AV女优AV女优*
  end sub
  .....
  让我们一步一步来分析这段代码.
  来看:
  memberid =rs(0) 取出用户库中的ID号.
  upface=trim(rs(1)) 取出自界说头像的途径.
  upfilename=split(upface,"/") 用"/"标记把upface分开.
  if ubound(upfilename)=1 and upfilename(0)="uploadFace"  then
  如果upfilename被分成两部门,以登科一部门的值为:"uploadFace"
  if  instr(upfilename(1),"_")=0 then
  如果upfilename的第二部门不包罗"_"标记
  newfilename="uploadFace/"&memberid&"_"&upfilename(1)
  newfilename就即是uploadFace/+用户的ID号+"_"+upfilename的第二部门.
  if objFSO.fileExists(Server.MapPath(upface)) then
  如果检测到upface这个途径的文件存在的话.
  好,最关键的中央来了。这便是挪动的核心代码:
  objFSO.movefile ""&Server.MapPath(upface)&"",""&Server.MapPath(newfilename)&""
  把upface变量中的文件挪动并更名为newfilename变量中的文件.
  Conn.Execute("update [user] set face='"&replace(newfilename,"'","")&"' where userid="&Dvbbs.userid)
  更新库中face字段的值.
  OK,代码分析完毕.各人应该看明确了。如果没有看明确,就跳转到:"让我们一步一步来分析这段代码"连续看.
  二、修练乾坤大挪移大法
  也许你还没有看出这段代码有什么不对的中央.好,如今让我来为你表明吧.
  各人都晓得在DOS中 "." 和".."的用法吧.在IE和中一样可以使用.
  如: http://ip/abc/../a.asp = http://ip/a.asp的.
  而且"/"和"\"在IE中输入的时间没有什么区别.
  不信赖,你试试:http://ip/a.asp和http://ip\a.asp.都是指向的一个页面.
  但是动网的人只判断了"/"标记,以"/"标记作为分隔符.误解了法佛,让乾坤大挪移传播下来.
  如今我们来举个例子.
  如果在库中的face字段为:uploadFace/.\..\index.asp 那么当我们执行这段代码的时间会产生什么?
  起首:upfilename被"/"分成两部门.
  第一部门:upfilename(0)=uploadFace
  第二部门:upfilename(1)=.\..\index.asp
  看着代码我们往下走.
  if ubound(upfilename)=1 and upfilename(0)="uploadFace"  then
  条件满足.请细致:uploadFace中的F是大写的.
  if  instr(upfilename(1),"_")=0 then
  条件满足.
  newfilename="uploadFace/"&memberid&"_"&upfilename(1)
  倘使我们的用户ID号为:9 那么:
  newfilename="uplodFace/9_.\..\index.asp"
  实际上是等同于:newfilename="uploadFace/index.asp"
  if objFSO.fileExists(Server.MapPath(upface)) then
  upface 是即是 uploadFace/.\..\index.asp
  实际上间接等同于:index.asp的.
  固然检测到这个文件的.然后下面他就开端挪动文件了。看代码.
  objFSO.movefile ""&Server.MapPath(upface)&"",""&Server.MapPath(newfilename)&""
  看uploadFace/..\..\index.asp挪动并更名为:uplodFace/9_.\..\index.asp
  经过我们的转换便是:把index.asp挪动到uplodFace/index.asp
  看明确了吧!好,修练成功,我们来利用挪动大法.
  三、运用乾坤大挪移大法,杀人于有形.
  先在动网的论坛中注册一个账号.然后我们点击菜单.用户控制面板->根本资料修改.
  好了,如今我们就在
  自界说头像地址: 背面的输入框中把默认的:userface/image1.gif 改成:uploadFace/.\..\index.asp
  然后点击更新.输入的东西第一次会生存在数据库固然.还不会挪动。由于修改的值还没有被读出来。
  我们再次点进根本资料修改。再次输入:uploadFace/.\..\index.asp呵呵,这次你再进主页就打不开了。
  由于已经被挪动了uploadFace目次下去了.如果在uploadFace目次下有index.asp挪动会失败。不会自动覆盖.
  有一点值得提示的便是如果我们把conn.asp挪动到uploadFace目次下,那么打开
  http://ip/dvbbs/uplodFace/conn.asp应该报出数据库相对途径。不外这个CONN.ASP自己就存在问题,间接输入http://ip/conn.asp有错误提示,所以我COPY过去也失败了。
  由于这个错误在报数据库途径之前。哎。。。如果能得到数据库相对途径该多好啊。
  各人想想看有没有什么办法挪动硬盘上的文件,这个我还没有去研讨
  时间太紧了!发现要领的朋友请第一时间通知我哟!
  四、乾坤大挪移大法,生可生,灭可灭
  我们为这个漏洞打个补丁吧,由于危害太多了。以POST提交数据,办理员查不到日记,而且可以挪动动网论坛中的任何文件.
  分析一下这个漏洞形成的缘故原由便是:没有过滤好"\"标记.
  我们把这句代码:if  instr(upfilename(1),"_")=0 then
  改成
  if instr(upfilename(1),"_")=0 and instr(upfilename(1),"\")=0 then
  看便是判断upfilename中不要包罗"\"标记. 
  好如许,补丁打好了!
  同时在这里我还发现了可以输入HTML语句各人自己测试一下.
  如在自界说途径输入框中输入:uploadFace/mm.jpg>要饭   呵呵没有过滤好,点击更新,再次前往到根本资料你会看到有要饭两个字在上面酿成粗体了。至于怎么利用。
  地球人都晓得,我就不说了。本日重要是为各人介绍这个挪动大法.再闪人之前,为各人送了一个好东东。
  请细致看光盘中的动画文件.有本教程的演示实例! 
  五、竣事闪人.
  本漏洞对动网论坛的危害是相当大的。可以挪动论坛中的任何文件到uploadFace目次下. 
  请各人不要利用本漏洞粉碎网上论坛。我这只是做了一个测试!并没有去粉碎任何数据.
  盼望动网官方的职员及时打上补丁.
  编写职员:臭要饭的!2003-12-25
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: