通过Spring Boot绕过Akamai WAF触发RCE

一名研究人员披露了一种绕过运行Spring Boot的Akamai Web应用程序防火墙(WAF)的技术,可能导致远程代码执行(RCE)。Akamai的WAF于数月前进行了修补,旨在降低分布式拒绝服务(DDoS)攻击的风险,并使用自适应技术来阻止已知的Web安全威胁。化名为“pmnh”的安全研究员Peter H表示,此次攻击使用了Spring表达式语言(SpEL)注入。漏洞赏金猎人在Synack pentester Usman Mansha参与私人Bugcrowd计划期间找到了绕过。

Peter H的一篇技术文章揭示了服务器端模板注入(SSTI)是绕过的核心。他们解释说,易受攻击的Spring Boot版本会在带有白标签错误页面的SpEL表达式中抛出错误消息。当使用易受攻击的框架时,这种注入会在服务器端进行评估——打开潜在的滥用途径。

Akamai的WAF在测试期间阻止了SSTI。然而,该团队坚持寻找利用SpEL调用操作系统命令的方法——可能是通过Java。

最明显的途径是找到通往java.lang.Runtime类的方法,从SpEL引用${T(java.lang.Runtime)}开始,但这被Akamai的软件阻止了。

“我怀疑这行不通,但在尝试绕过WAF时,从你知道有效的小东西构建到更大、更复杂的有效负载非常重要,”研究人员说。

下一阶段是找到对任意类的引用,Peter H说这将允许“直接方法调用或基于反射的调用来获取我们想要的方法”。

Peter H和Mansha使用反射方法获取对Class.forName的访问权限,使用java.lang.Runtime值构建任意字符串,访问java.lang.Runtime.getRuntime方法,并创建另一个字符串来访问java.lang。运行时——从而支持开发可工作的RCE负载。

最终有效负载小于3kb,并被服务器接受为GET请求。

而,绕过WAF绝非易事。Peter H指出,大约需要500次精心设计的尝试和14多个小时才能找到入口点。

研究人员拒绝提供文本格式的最终​​有效载荷,以防止盲目模仿。

“在这种情况下,需要对Java和SpEL功能有深入了解,才能构建既能绕过Akamai WAF又能在其执行环境中工作的有效载荷,”他们指出。

征求意见时,Akamai说,只有在研究人员使用旧版本的Akamai WAF保护引擎时才有可能绕过。

补丁已于2022年7月25日发布。因此,运行最新引擎版本的客户不会面临被利用的风险。

Akamai表示:“Akamai获悉一名安全研究人员的发现,该研究人员声称已绕过Akamai的WAF。此问题已被发现,并在发布此博文前几个月发布了更新。

“Akamai威胁研究团队一直在寻找新的攻击类型,并致力于定期主动更新保护措施。Akamai建议所有客户确保支持Akamai WAF的保护引擎Adaptive Security Engine是最新的,最好是通过自动更新。”

发表评论

评论已关闭。

相关文章