WAF攻防之SQL注入篇
0x00 前言
随着国家安全法的出台,网络安全迎来发展的新时期,越来越多企业或政府单位开始重视网络安全。很多网站陆陆续续告别裸奔时代,开始部署web应用防火墙(WAF)以应对网络攻击。由此,相关网站的安全性很大程度上取决于WAF的防护能力,WAF攻防研究已成为安全从业人员的必修课之一。
大多数WAF以规则匹配为基础进行安全防护,少数WAF带有自学习能力,规则维护成为WAF的核心。近年来,基于语义识别的WAF陆续出现,对其防护能力的研究也成为大家关心的热点之一。本文以MySQL为研究对象,总结相关WAF注入绕过技术,通过实战演练让大家了解各大WAF的相关特性,最后从攻防角度对WAF安全进行总结。
0x01 注入绕过技术总结
对已知的WAF相关绕过技术,总结如下,网上已有相关技巧的讲解,这里就不一一演示,不明白的可以自己查询相关资料:
在实际攻击场景中,单一的绕过技巧往往无效,需要我们综合利用各种绕过技术进行组合,结合各自WAF特性不断进行推理,才能真正实现绕过。
0x02 注入点检测绕过
Bypass WAF的第一步是识别注入点,我们拿到一个URL,第一步判断参数是否有注入,然后再进行后续的绕过。简单的and 1=1 and 1=2判断肯定会被WAF拦截,我们需转变思路进行绕过,一般WAF为了平衡风险和业务的关系不会对下面数字型探测方式进行拦截,否则会产生大量误报影响正常业务运行。
[<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee3df20b4e~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2Ft-2.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/t-2.png”” style=“margin: auto” />
<img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee3dff3724~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image) [](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2Ft-4.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/t-4.png”" style=“margin: auto” />
本地测试环境:<img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee3f1230ff~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)如若 and也会拦截,可以直接在参数上进行类似判断操作,如id=1*0 、id=1*2,除了以上方法,还有很多其它衍生出的识别绕过方法,以{“op}为例作演示,其它的方法大家可以按照这种思路自行发挥" style=“margin: auto” />
安全狗:
[<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee3e232314~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F%25E5%25AE%2589%25E5%2585%25A8%25E7%258B%2597.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/%E5%AE%89%E5%85%A8%E7%8B%97.png”” style=“margin: auto” />
百度云加速:[<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee5f084b72~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F%25E7%2599%25BE%25E5%25BA%25A6%25E4%25BA%2591%25E5%258A%25A0%25E9%2580%259F.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/%E7%99%BE%E5%BA%A6%E4%BA%91%E5%8A%A0%E9%80%9F.png”” style=“margin: auto” />
腾讯云:
[<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee614170fa~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F%25E8%2585%25BE%25E8%25AE%25AF%25E4%25BA%2591.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/%E8%85%BE%E8%AE%AF%E4%BA%91.png”” style=“margin: auto” />
阿里云:
[<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee629c56b4~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F%25E9%2598%25BF%25E9%2587%258C%25E4%25BA%2591.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/%E9%98%BF%E9%87%8C%E4%BA%91.png”” style=“margin: auto” />
当我们已确认注入点后,下一步的目标是完全Bypass WAF出任意数据,以下以安全狗、modsecurity、百度云加速、 阿里云盾、长亭雷池截止目前最新的版本为例,这里只提供绕过的思路,即如何利用已知技巧进行组合推理来绕过相关WAF防护,出数据具体过程这里就不详解,大家感兴趣的可以手动尝试。
0x03 安全狗Bypass
本地无WAF测试环境:[<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee6f1b2c78~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F%25E6%259C%25AC%25E5%259C%25B0%25E6%2597%25A0WAF%25E6%25B5%258B%25E8%25AF%2595%25E7%258E%25AF%25E5%25A2%2583.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/%E6%9C%AC%E5%9C%B0%E6%97%A0WAF%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83.png”” style=“margin: auto” />
在对安全狗的绕过测试中发现,只需利用一个*/闭合多个/*!即可绕过,简单粗暴。
http://192.168.20.123:81/user.php?id=-11/*!union/*!select/*!1,(select/*!password/*!from/*!test.user limit 0,1),3*/
[<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee6f7d026c~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F0x03%25E5%25AE%2589%25E5%2585%25A8%25E7%258B%2597%25E7%25B2%2597%25E6%259A%25B4%25E7%25BB%2595%25E8%25BF%2587.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/0x03%E5%AE%89%E5%85%A8%E7%8B%97%E7%B2%97%E6%9A%B4%E7%BB%95%E8%BF%87.png”” style=“margin: auto” />
0x04 Modsecurity Bypass
本地环境搭建modsecurity模块进行安全防护,利用{“op}、/*!50000*/组合进行绕过。
http://192.168.20.123/user.php?id=1 and{`version`length((select/*!50000schema_name*/from/*!50000information_schema.schemata*/limit 0,1))>0}
[<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee6fa55d50~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F0x04-mod-security-%25E7%25BB%2595%25E8%25BF%2587.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/0x04-mod-security-%E7%BB%95%E8%BF%87.png”” style=“margin: auto” />
0x05 百度云加速Bypass
利用–+%0a进行绕过。<img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee88a1da37~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)[](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F0x05-%25E7%2599%25BE%25E5%25BA%25A6%25E4%25BA%2591%25E5%258A%25A0%25E9%2580%259FBypass-2.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/0x05-%E7%99%BE%E5%BA%A6%E4%BA%91%E5%8A%A0%E9%80%9FBypass-2.png”" style=“margin: auto” />
0x06 阿里云盾Bypass
利用–+%0a、@自定义变量、{a key}组合进行绕过。
<img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee8878cac5~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)[](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F0x06-%25E9%2598%25BF%25E9%2587%258C%25E4%25BA%2591%25E7%259B%25BEBypass-2.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/0x06-%E9%98%BF%E9%87%8C%E4%BA%91%E7%9B%BEBypass-2.png”" style=“margin: auto” />
0x07 长亭雷池Bypass
经过大量测试后,发现雷池在处理MySQL注释符/*<img src=“https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0cee9cff1a1d~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F0x07-%25E9%2595%25BF%25E4%25BA%25AD%25E9%259B%25B7%25E6%25B1%25A0Bypass-1.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/0x07-%E9%95%BF%E4%BA%AD%E9%9B%B7%E6%B1%A0Bypass-1.png”)[](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F0x07-%25E9%2595%25BF%25E4%25BA%25AD%25E9%259B%25B7%25E6%25B1%25A0Bypass-2.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/0x07-%E9%95%BF%E4%BA%AD%E9%9B%B7%E6%B1%A0Bypass-2.png”” style=“margin: auto” />
0x08 自动化bypass
当我们挖掘出绕过相关WAF进行SQL注入的技巧后,下一步就是编写脚本实现工具自动化注入。以sqlmap为例,我们编写tamper脚本实现注入自动化。<img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2018/2/26/161d0ceeb9977f95~tplv-t2oaga2asx-zoom-in-crop-mark:4536:0:0:0.image)[](https://link.juejin.cn/?target=http%3A%2F%2Fosajswi8b.bkt.clouddn.com%2Fwp-content%2Fuploads%2F2018%2F02%2F0x08-%25E8%2587%25AA%25E5%258A%25A8%25E5%258C%2596bypass-2.png “http://osajswi8b.bkt.clouddn.com/wp-content/uploads/2018/02/0x08-%E8%87%AA%E5%8A%A8%E5%8C%96bypass-2.png”" style=“margin: auto” />
0x09 WAF防御
对已知或未知的安全问题进行防御是WAF功能的核心,漏报及误报是衡量一个WAF产品好坏的重要指标,具体落实到规则的及时更新、bypass新技巧的及时响应。另外,还应综合利用拦截日志数据进行相关算法分析,不断提高WAF的防护能力。总结来说,打造一款上乘的WAF,非一朝一日之功,需长期的技术储备、产品不断地更新迭代、算法地持续优化,才能把好防御这个重要的关口。同时,不断探索新的高效防护方法,才能在攻防战中立于不败之地。
0xa0 总结
从攻击者角度来看,绕过WAF的基本方法其实不多,如何把这些已知方法融合起来,并结合各自WAF本身的防护特性,不断进行推理,成为突破WAF防护的关键。当然,自动化Fuzz才是WAF Bypass新技术产生的正道。另外,从个人的注入Bypass测试过程看,绕过基于语义识别的WAF比绕过基于规则识别的WAF难得多,值得我们挑战。
从WAF产品角度来看,衡量一个WAF好坏的标准是漏报率和误报率的高低,但这些指标建立在以WAF不影响正常业务为前提。测试中我发现,基于规则的WAF对业务的耦合度往往较低,不管是腾讯云WAF还是阿里云盾,对用户的输入都较为敏感,如参数中输入注释符请求就会被拦截。而基于语义的WAF的和业务的耦合度较高,误报率下降明显。从测试结果来看,基于语义识别的WAF相较传统WAF来说有较大优势,值得我们学习和借鉴。
从安全管理者角度来讲,从以上测试过程可以看出,不管是基于规则的WAF还是基于语义识别的WAF,都存在被都完全绕过的可能。WAF的主要作用是提高攻击门槛,但不能消灭攻击入侵事件,解决安全问题的根本途径还得从代码层面着手进行修复。
WAF攻防之SQL注入篇相关推荐
- 渗透学习-SQL注入篇-基础知识的学习(持续更新中)
提示:仅供进行学习使用,请勿做出非法的行为.如若由任何违法行为,将依据法律法规进行严惩!!! 文章目录 前言 一.SQL注入产生的原因 二.手工注入大致过程 1.判断注入点: 2.猜解列名 3.猜解能 ...
- oracle延时盲注如何防止,【原创】WEB安全第四章SQL注入篇21 oracle 延时注入
WEB安全第四章SQL注入篇21 oracle 延时注入 1.简介 DBMS_LOCK.SLEEP()函数可以让一个过程休眠很多秒,但使用该函数存在许多限制.首先,不能直接将该函数注入子查询中,因为O ...
- DVWA通关-SQL注入篇
DVWA通关-SQL注入篇 开篇之前 我知道网上也有很多通关攻略,但都是别人通关,复制粘贴也是别人的,所以就想写一下自己的.写下这篇文章主要是记录自己的学习,以及和各位朋友交流,有错误的地方,希望 ...
- web之SQL注入篇BUU
web之SQL注入篇BUU [强网杯 2019]随便注 预处理语句 handler [SUCTF 2019]EasySQL 判断是字符型还是数字型注入 判断是否可以联合查询 判断是否可以使堆叠注入 | ...
- 测试具有44个漏洞点的简单小靶场-SQL注入篇
文章目录 本地搭建 SQL注入篇 注入1(数字型注入) 注入2(闭合单引号) 注入3(闭合双引号) 注入4(闭合括号) 注入5(报错注入) 注入6(布尔盲注) 注入7(过滤了'--'和'#'以及'%2 ...
- 【WAF技巧拓展】————6、我的WafBypass之道(SQL注入篇)
0x00 前言 去年到现在就一直有人希望我出一篇关于WAF的文章,我觉得这种老生常 谈的话题也没什么可写的.很多人一遇到waf就发懵,不知如何是好,能搜到的各 种姿势也是然并卵.但是积累姿势的过程也是 ...
- 【SQL注入技巧拓展】————13、我的WafBypass之道(SQL注入篇)
0x00 前言 去年到现在就一直有人希望我出一篇关于WAF的文章,我觉得这种老生常 谈的话题也没什么可写的.很多人一遇到waf就发懵,不知如何是好,能搜到的各种姿势也是然并卵.但是积累姿势的过程也是迭 ...
- 我的WafBypass之道(SQL注入篇)
原帖地址:https://xianzhi.aliyun.com/forum/read/349.html 0x00 前言 去年到现在就一直有人希望我出一篇关于waf绕过的文章,我觉得这种老生常 谈的话题 ...
- 【WAF剖析】——sql注入之奇淫巧技bypass(持续更新中)
作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭:不要让时代的悲哀 ...
最新文章
- 第七课.含隐变量的参数估计
- Hadoop学习之HDFS架构(二)
- 逻辑分析仪抓取CAN总线波特率
- Zabbix监控agent
- 登录,注册,登录,登录..?
- javascript构造函数类和原型prototype定义的属性和方法的区别
- HDU 5752 Sqrt Bo【枚举,大水题】
- matlab 解析 mnist 数据集
- 有关计算机的未来想象作文,电脑的想象作文
- MySQL安装包MySQL Installer下载地址
- 百度网盘有linux客户端吗,bcloud-百度网盘Linux客户端
- 使用机器学习算法打造一个简单的“微博指数”
- 科普下Tippy.js - 开源且高度可做空间php的气泡翻译器
- java就业感言_JAVA就业班感言
- 章文嵩:怎样做开源才有意义?
- python numpy中的矩阵、向量的加减乘除
- java中控制反转_Java如何利用IOC控制反转的三种设计模式详解
- JS实现上一个、下一个、置顶、置底操作
- OpenCV开发笔记(七十一):红胖子8分钟带你深入级联分类器训练
- 复杂网络实验报告2019210025曾培圣