安全研究人员开发了一种通用的 SQL 注入技术,可以绕过多个 Web 应用程序防火墙 (WAF)。问题的核心是 WAF 供应商未能在 SQL 语句中添加对 JSON 的支持,从而使潜在的攻击者可以轻松隐藏其恶意负载。
Claroty Team82 的研究人员发现的绕过技术已被证实可以对抗来自 Palo Alto Networks、Amazon Web Services (AWS)、Cloudflare、F5 和 Imperva 的 WAF。
这些供应商已发布补丁,因此客户应更新其 WAF 部署。但是,该技术也可能适用于其他供应商的 WAF 解决方案,因此用户应该询问他们的提供商是否可以检测并阻止此类攻击。
Claroty 研究人员在他们的报告中说:“使用这种新技术的攻击者可以访问后端数据库并使用其他漏洞和漏洞利用通过直接访问服务器或通过云来泄露信息。
这对于已经转向基于云的管理和监控系统的 OT 和物联网平台尤为重要。WAF 承诺从云中获得额外的安全性;能够绕过这些保护的攻击者可以广泛访问系统。”
在调查其他漏洞时发现绕过
Claroty 研究人员在调查他们在 Cambium Networks 名为 cnMaestro 的无线设备管理平台中发现的漏洞时开发了这种攻击技术,该平台可以部署在本地和云端。
Cambium 运营的云服务为每个客户提供单独的 cnMaestro 服务器隔离实例,并在后端使用 AWS。
该团队在 cnMaestro 中发现了七个漏洞,包括一个 SQL 注入 (SQLi) 漏洞,该漏洞允许他们从服务器数据库中窃取用户会话、SSH 密钥、密码哈希、令牌和验证码。
SQL 注入是最常见和最危险的 Web 应用程序漏洞之一,它允许攻击者将任意 SQL 查询注入请求,然后应用程序将以自己的权限对数据库执行这些请求。
在确认他们的漏洞对 cnMaestro 的本地部署有效后,研究人员尝试对云托管实例进行攻击。从服务器响应中,他们意识到请求很可能被 AWS 的 Web 应用程序防火墙阻止,防火墙将其检测为恶意请求。
研究人员没有放弃,而是决定调查 AWS WAF 如何识别 SQL 注入尝试,因此他们创建了自己的托管在 AWS 上的易受攻击的应用程序并向其发送恶意请求。
他们的结论是,WAF 使用两种主要方法来识别 SQL 语法:在请求中搜索它识别为 SQL 语法一部分的特定词,并尝试将请求的不同部分解析为有效的 SQL 语法。
虽然大多数 WAF 除了 WAF 的独特之处外,还会结合使用这两种方法,但它们都有一个共同的弱点:它们需要 WAF 来识别 SQL 语法。
这引发了我们的兴趣,并提出了一个主要的研究问题:如果我们能找到 WAF 无法识别的 SQL 语法会怎样?
WAF 供应商忽视了 SQL 中的 JSON
大约从 10 年前开始,数据库引擎开始添加对使用 JSON(JavaScript 对象表示法)数据的支持。JSON 是一种数据格式和交换标准,在网络应用程序和网络 API 相互通信时广泛使用。
由于应用程序已经以 JSON 格式交换数据,关系数据库引擎的创建者发现允许开发人员在 SQL 操作中直接使用此数据而无需额外处理和修改非常有用。
PostgreSQL 早在 2012 年就添加了此功能,多年来其他主要数据库引擎也相继加入:2015 年的 MySQL、2016 年的 MSSQL 和 2022 年的 SQLite。
如今,所有这些引擎都默认启用了 JSON 支持。然而,WAF 供应商并没有效仿,可能是因为他们仍然认为这个功能是新的并且不为人所知。
Claroty 研究人员称:“根据我们对 WAF 如何将请求标记为恶意请求的理解,我们得出的结论是,我们需要找到 WAF 无法理解的 SQL 语法,如果我们可以提供 WAF 无法识别为有效 SQL 但数据库引擎会解析它的 SQLi 有效负载,我们实际上可以实现绕过。
事实证明,JSON 正是 WAF 的解析器和数据库引擎之间的这种不匹配。当我们传递使用不太流行的 JSON 语法的有效 SQL 语句时,WAF 实际上并没有将请求标记为恶意请求。”
在确认 AWS WAF 防火墙存在漏洞并且他们可以使用 JSON 来隐藏他们的 SQLi 漏洞后,研究人员想知道其他 WAF 是否也存在同样的漏洞。
对几家主要供应商的 WAF 的测试证明他们的怀疑是正确的,他们可以使用 JSON 语法绕过 SQLi 防御,而供应商之间只需进行最小的修改。
研究人员向他们发现容易受到攻击的供应商报告了这个问题,同时也将他们的技术贡献给了 SQLMap,这是一种开源渗透测试工具,可以自动执行 SQL 注入攻击。这意味着绕过技术现在是公开可用的,任何人都可以使用。
Team82 向五家领先的 WAF 供应商披露了它的发现,所有这些供应商都在他们的产品中添加了 JSON 语法支持。
我们认为其他供应商的产品可能会受到影响,应该对 JSON 支持进行审查。
执行摘要
- Team82 开发了一种通用的绕过行业领先的 Web 应用程序防火墙 (WAF) 的方法。
- 攻击技术涉及将 JSON 语法附加到 WAF 无法解析的 SQL 注入负载。
- 主要的 WAF 供应商在他们的产品中缺乏 JSON 支持,尽管它被大多数数据库引擎支持了十年。
- 大多数 WAF 将很容易检测到 SQLi 攻击,但在 SQL 语法之前添加 JSON 会使 WAF 对这些攻击视而不见。
- 我们的绕过对五家领先供应商销售的 WAF 有效:Palo Alto Networks、Amazon Web Services、Cloudflare、F5 和 Imperva。这五家公司都已收到通知并更新了他们的产品,以在其 SQL 注入检查过程中支持 JSON 语法。
- 使用此技术的攻击者将能够绕过 WAF 的保护并使用其他漏洞来泄露数据。
Cambium 的 cnMaestro 云架构允许用户从云端远程配置和控制他们的 AP Wi-Fi 设备。
CVE-2022-1361 中滥用的 SQL 注入汇点
返回字符串作为其字符的整数列表的 SQL 查询。
返回字符串中每个字母的 ascii 值的 SQL 负载,字符的索引乘以 1,000。
一个 SQL 查询,它接受一个字符串,每隔几个字符创建一个 BIGINT
使用这种方法,我们能够在每个请求中泄露多达 8 倍的数据。这减少了我们泄露大量数据并使攻击场景变得合理所需的时间。
构建我们的有效载荷在我们绕过了所有三个限制之后,我们留下了一个很大的有效负载,允许我们提取我们选择的任何数据:
事实上,当我们使用这个 payload 时,我们设法泄露了存储在数据库中的敏感信息,从会话 cookie 到令牌、SSH 密钥和哈希密码。
我们使用 SQLi 有效负载泄露的数据示例。
全文阅读地址:
https://claroty.com/team82/research/js-on-security-off-abusing-json-based-sql-to-bypass-waf