您的位置 首页 漏洞感知

如何在ModSecurity的核心规则集中找到ReDOS漏洞

本文将会讲述我是如何在世界知名WAF的规则集中找到ReDOS漏洞的,如果你还不是很熟悉正则表达式和ReDOS漏洞,可以阅读我的前一篇文章:https://nosec.org/home/detail/2506.html。简单来说,ReDOS漏洞由于某些正则表达式在编写时忽略了安全性,导致在匹配搜索某些特殊的字符串时会消耗大量计算资源,产生DOS攻击的效果。而现在不少WAF产品都是依赖正则表达式对流量进行过滤,一旦哪个正则表达式存在安全问题,就有可能使WAF受到ReDOS漏洞的攻击。

最近,我花了很多时间去研究WAF中的ReDOS漏洞。而我的目标则是世界知名的WAF产品ModSecurity的核心规则集CRS,因为它有大量的正则表达式,正好锻炼我的绕WAF能力,一石二鸟!

CRS有29个配置文件,其中包含大量正则表达式,我不可能全部手动测试,所以我编写了一个脚本自动化处理。遗憾的是脚本还处于alpha阶段,我还不能公开它,不过我已想好了发布时间,相信不久后就能和大家见面。

在利用脚本得到一些可疑的正则表达式后,我使用regex101.com来去除表达式中的无用部分,例如把((fine)|(vulnerable))中的(fine)删除

我还使用了RegexBuddy来分析不同漏洞的利用方式,最后用Python解释器来确认利用有效。

现在,让我们谈谈我所发现的漏洞点以及它们的利用方式。

 

Case#1

表达式: (?:(?:^["'`\\]*?[^"'`]+["'`])+|(?:^["'`\\]*?[d"'`]+)+)s

利用: """""""""""""" (大约1000个")

为什么是漏洞?

这个表达式是由|符连接两个子表达式而成的,而且两个子表达式都是以^[”’`\\]*?开头,然后末尾再接上一两个特殊字符。正则表达式引擎在处理时会遍历两种子表达式的所有可能,大大消耗计算资源。

而且在第二子表达式中,^[”’`\\]*?[d”’`]+都会匹配 和反引号有明显的竞争关系。

这种((pattern 1)+|(pattern 2)+)+重复运算符加嵌套的模式很明显在处理特殊字符串时会消耗大量计算资源。

 

Case#2

表达式: for(?:/[dflr].*)* %+[^ ]+ in(.*)s?do弱点: for(?:/[dflr].*)* %

利用: for/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r

为什么是漏洞?

让我们一步步看看这个表达式对特殊字符串的匹配步骤

f
foforfor/for/rfor/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r

我所给出的字符串后半部分会被.*所匹配,但由于字符串的末尾不是%,最终会导致匹配失败。

此时,为了成功匹配,此时匹配逻辑会放过最后的字符r,看看其余字符串是否符合:

for/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/

当然,匹配依旧失败。一般来说,匹配逻辑会不断后退,直到退无可退,彻底匹配失败。但是,由于这里是两个重复运算符的叠加应用,事情变得更加复杂。而且/r既可以被.*匹配,又会被/[dflr]匹配……

我不确定如果运行完需要多少次计算,我使用的RegexBuddy4的上限为10,00,000,很显然真实的数字远超这个值。

 

Case#3

Pattern: (?:s|/*.**/|//.*|#.*)*(.*)Exploit: ################################################

为什么是漏洞?

(?:s|/*.**/|//.*|#.*)*可以看作由|符连接四个子表达式,其中3个具有.*这种可以匹配一切的敏感符号。当正则表达式引擎将表达式与字符串进行匹配搜索时,只有最后的子表达式才匹配,但因为缺少表达式所需的(),匹配失败,此时正则表达式引擎会变得很疯狂,而且这里也存在重复运算符的嵌套问题。最终,每增加一个#字符,所需的计算步骤数就会疯狂增长。

最后这个case我在3个不同的规则中都有找到。

在我上报了以上漏洞后,得到了如下CVE:

感谢你的阅读,今后我将继续分享更多关于ReDOS的研究。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/2508.html
来源:https://medium.com/@somdevsangwan/how-i-found-5-redos-vulnerabilities-in-mod-security-crs-ce8474877e6e
免责声明:若文章为网络转载内容,则文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

Bonitasoft认证绕过和RCE漏洞分析及复现(CVE-2022-25237)

Bonitasoft认证绕过和RCE漏洞分析及复现(CVE-2022-25237)

一、漏洞原理 漏洞简述 Bonitasoft 是一个业务自动化平台,可以更轻松地在业务流程中构建、部署和管理自动化应用程...

Google Chrome存在拒绝服务漏洞 – CNVD-2022-64946

近日,AVANS团队发现Google Chrome存在拒绝服务通用漏洞,已第一时间将漏洞详情提交至CNVD(国家互联网应...
Chakra漏洞调试笔记5-CVE-2019-0861复现

Chakra漏洞调试笔记5-CVE-2019-0861复现

在《Chakra漏洞调试笔记》1~4中,笔者从ImplicitCall,OpCode Side Effect,Missi...

常见网络安全设备弱口令

设备默认账号默认密码深信服产品sangforsangfor sangfor@2018 sangfor@2019深信服科技...
MessageSolution 邮件归档系统EEA 信息泄露漏洞 CNVD-2021-10543

MessageSolution 邮件归档系统EEA 信息泄露漏洞 CNVD-2021-10543

MessageSolution企业邮件归档管理系统 EEA是北京易讯思达科技开发有限公司开发的一款邮件归档系统。该系统存...
返回顶部