关于绕过WAF

zbs   ·   发表于 2023-11-01 23:26:35   ·   学习杂记

waf:Web应用防护系统,也称为:网站应用级入侵防御系统

核心目的:防御网站被入侵。
具体手段:检测到你的入侵者,然后拦截你当前访问的页面或者是跳转其他页面,或者是直接禁止你的ip访问。
(waf会拦截恶意传参你们。但是并不是所有的拦截都是WAF干的【可能开发会有自己的防护策略,过滤你的恶意传参数据】)
https://blog.csdn.net/weixin_46676743/article/details/112245605这个网站有很多常见的waf图
eg1:

这里应该是过滤and *:

WAF检测机制核心就是正则表达式,通过开发人员写在WAF里面的正则表达式来匹配内容,匹配到了就触发
拿课件的一个cms源码观察:


可以看到正则表达式的preg_match
复习一下正则表达式:
正则表达式需要加/../ 是一个符号识别这是正则表达式
[^]取反/^匹配输入字符串的开始位置!!,[0-9a-z]不要隔开
$匹配输入字符串的结尾位置 如果^??$就是限定了字符长度

这里第一个应该如果出现(除了a-z)sleep(除了a-z),就防护了sleep函数
下面其他几个函数类似

常见绕过手法:
1、用其他函数、写法替代 $a=get_defined_functions();$a[‘internal’]841; (这个是一句话木马)
上例的sleep:

【百度检索】
2、大小写绕过(有些老WAF大小写就能绕)【没什么用了】
3、替换绕过:有些过滤规则强行删除检测到的代码,然后执行
eg:sleep检测删除—》 那就输入slsleep()eep(),删掉sleep()变成sleep()
4、编码绕过:网站因为功能需要有编解码,然后因为WAF不认识编码后的值然后绕过了【注意:浏览器只会url编码,编码绕过需要后端开启了解码的功能,否则你的编码后端也看不懂解析不了】
http://ctf.ssleye.com/这个网站有很多编码解码,一个个试就好了
5、注释绕过:WAF有的时候会认为注释后的东西是安全的,然后可以尝试hpp
这个在很多靶场作业都有体现:/……./waf会认为…是安全的不检查,在里面写payload
eg:http://xxxx.com/id=1/*order by 1&id=1 and sleep(1) — qwe*/

6、白名单绕过:本地访问可能不拦截、管理员权限 (1、文件白名单 )

7、垃圾数据填充:写个一大堆数据,然后传参,WAF只检测其中一部分绕过了
WAF检测东西需要时间,而且有的时候还会有长度限制 (POST)

找了一个没做过的waf靶场:

注释绕不过,编码居然也绕不过【大小写、替换也没用,管理员权限别想了】


【本来想找个例子截图,尴尬了】
经过测试,发现只允许==,order by等关键字。通过仔细观察页面,发现应该是网页防护,网页防护就是通过代码验证get或post参数中是否有select等非法的关键字参数,如果有这些非法参数,就调用弹窗提示是非法字符。
知道了是网页防护,我们就换一种注入方式,Cookie进行绕过。
Cookie注入:用Burpsuite进行抓包修改cookie or 直接在地址栏构造javascript:alert(document.cookie=“id=”+escape(“169”));
eg:

绕过防护了,说明没有对cookie传参进行防护【这里的cookie只是利用他成为一种特殊的传参方式】

这是不是要增加一个8、改变传参方式。

找到个注释绕过的靶场:

还可以替代写法绕过正则表达式对and 1=1的匹配:

编码绕过不行—》后端没有开启解码函数

【关于sqlmap绕过waf】:


在这里有各种各样的绕过脚本

绕过脚本核心:


payload => 原本SQLmap要执行的代码
kwargs 设置HTTP头 (比较废物)
我们在tamper下面写我们的payload,比如我们的注释绕过hpp:


我们的payload得写成?xx=1/ ….(执行代码) 的形式
会自动帮我们补充注释绕过waf方法
【注意sqlmap使用时对
的功能要No,这里的*是注释用的,并不是传参点】

打赏我,让我更有动力~

1 条回复   |  直到 5个月前 | 179 次浏览

黑鬼
发表于 5个月前

本来也想硬钢绕过 waf 的,到 select 那一步怎么也绕不过去。真烦人,留名。水绕过去艾特一下我。

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.