竞争条件能过WAF吗

极客

竞争条件能过WAF吗?聊聊我踩过的那些坑

说真的,这个问题我第一次听到的时候,脑子里冒出来的第一个念头就是——“兄弟,你是想搞事情啊?”哈哈,开个玩笑,不过话说回来,竞争条件能过WAF吗这个问题,确实是很多做安全测试的朋友都会好奇的一个点,我自己也在这上面折腾过不少时间,今天就跟大家掏心窝子聊聊我的真实体验。

竞争条件能过WAF吗

先说说什么是竞争条件

竞争条件(Race Condition)这玩意儿吧,说白了就是系统在处理并发请求的时候,因为时序问题导致的一些逻辑漏洞,比如你同时发两个请求去提现,理论上你账户只有100块,但两个请求同时检查余额都通过了,结果你提了200块出来,这种事情在早年的Web应用里简直不要太常见。

我第一次接触这个概念的时候,那叫一个兴奋啊,心想这不就是绕过各种限制的万能钥匙吗?于是就开始琢磨——竞争条件能过WAF吗?毕竟WAF(Web应用防火墙)这东西拦的就是各种异常请求,那并发算不算异常呢?

我的实战经历

说实话,我拿自己搭建的测试环境试了好几次,WAF我用的是某知名厂商的社区版,规则全开,然后写了个Python脚本,用多线程模拟并发请求,目标是测试一个优惠券重复领取的逻辑。

结果怎么样呢?部分场景下确实能过,但别高兴太早。

WAF主要检测的是请求内容层面的东西——SQL注入特征、XSS payload、恶意User-Agent这些,竞争条件攻击的单个请求看起来完全合法啊!参数正常、Cookie正常、Header正常,WAF凭什么拦你?它又不是业务逻辑层的东西。

这里有个大大的但是,现在很多高级WAF已经加入了行为分析模块,比如短时间内同一IP的高频请求、异常并发模式,这些是会被盯上的,我就遇到过请求发太快直接被限速甚至封IP的情况,那叫一个郁闷。

关键点来了

所以回到竞争条件能过WAF吗这个问题,我的答案是:

  • 传统规则型WAF:大概率能过,因为它根本不关心你的业务逻辑
  • 带行为分析的现代WAF:有可能被识别,尤其是请求频率异常的时候
  • 云WAF+CDN组合:更难搞,因为还有速率限制和指纹识别

但你要问我竞争条件能不能过WAF,我觉得核心不在WAF本身,而在于你的请求够不够“像正常用户”,你要是几十个并发一秒内怼过去,那不好意思,什么WAF都得把你当DDoS处理。

怎么提高成功率

我后来总结了几点经验,纯个人心得啊:

  1. 控制并发数,别贪多,5-10个线程慢慢来
  2. 加随机延迟,模拟真人操作节奏
  3. IP轮换,这个不用我多说吧
  4. 请求头要逼真,别用脚本默认的User-Agent

说到底,竞争条件能过WAF吗这个问题没有绝对答案,安全这东西就是猫鼠游戏,今天能过不代表明天能过,我现在做测试都会先摸清目标WAF的类型和规则,再决定用什么策略。

好了,今天就唠到这儿,如果你也在研究这个话题,欢迎一起交流,毕竟一个人踩坑太孤单了哈哈哈!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]