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.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。