突破OpenResty Web安全防护:CVE-2018-9230深度分析

版权申诉
0 下载量 181 浏览量 更新于2024-08-22 收藏 1.77MB PDF 举报
"打破基于openresty的WEB安全防护(CVE-2018-9230).pdf" 本文主要讨论了针对基于OpenResty的Web安全防护的一个漏洞,该漏洞被标记为CVE-2018-9230。OpenResty是一个强大的Web平台,它结合了Nginx和Lua,提供了丰富的内置库和第三方模块。在2018年发现的这个漏洞允许远程攻击者绕过基于OpenResty的安全措施,影响了多个开源Web应用防火墙(WAF)。 漏洞的关键在于OpenResty在处理URI参数时的逻辑。通过ngx.req.get_uri_args和ngx.req.get_post_args这两个函数,OpenResty可以从URI和POST请求中获取参数。然而,当存在重叠参数时,系统并未正确处理,这为攻击者提供了可乘之机。受影响的是OpenResty的所有版本。 为了更好地理解这个问题,我们可以构建一个测试环境,例如在CentOS 6上安装OpenResty的原始版本1.13.6.1。在测试环境中,可以设置一个监听80端口的服务器,并创建一个location来测试获取URI和POST参数的行为。通过ngx.req.get_uri_args获取GET参数,通过ngx.req.get_post_args获取POST参数。在实际测试中,攻击者可能会利用参数大小写的变体,比如将同一个参数id以id、Id、iD、ID等多种形式提交,由于OpenResty没有统一处理这些大小写不同的参数,它们会被当作不同的参数,这可能导致安全策略的误判。 这种漏洞可能让攻击者绕过基于OpenResty的安全规则,比如过滤或限制特定参数,因为大小写变化的参数可能不会被正确的安全策略所覆盖。因此,修复这个漏洞非常重要,开发者需要确保OpenResty的更新能够解决这个问题,或者在代码层面实现参数处理的标准化,确保所有参数无论大小写如何都得到一致处理。 对于安全研究人员和运维人员来说,了解并防范此类漏洞至关重要,因为OpenResty被广泛用于构建高性能的Web服务。及时更新OpenResty到最新版本,或应用补丁以修复这个CVE,可以防止潜在的安全风险。同时,对于使用OpenResty的开发者,应增强对输入参数的验证和清理,避免因大小写问题导致的安全漏洞。