通过Spring Boot 绕过Akamai WAF并触发RCE
编译:代码卫士
Akamai 的WAF 在数月前修复,旨在缓解DDoS 攻击并使用适应性技术拦截已知的 web 安全威胁。Peter H 表示,攻击使用的是 SpEL 注入技术。他在参加Bugcrowd 的非公开漏洞奖励计划时和Synack 公司的渗透测试师 Usman Mansha 找到了该绕过方法。
Peter H 发布报告指出,服务器端模板注入 (SSTI) 是该绕过的核心。易受攻击的Spring Boot 版本抛出在白标出错页面的SpEL表达式中的错误信息。当使用了易受攻击的框架时,就会存在滥用风险。
Akamai 的WAF 在测试时拦截了该SSTI,然而,研究员寻找利用 SpEL 调用操作系统命令的多种方式。最明显的路径是找到 java.lang.Runtime 类的方式,该类以 SpEL 引用 ${T(java.lang.Runtime)} 开头,不过遭Akamai 软件的拦截。研究人员指出,“我怀疑不会起作用了,不过尝试绕过WAF时,从你知道的小处着手、再使用更大更复杂的payload 很重要。”
下一步是找到任意类的引用,以便使“直接方法调用或者基于反射的调用获取我们想要的方法。”研究人员使用反射型方法获得对Class.forName 的访问权限,通过值 java.lang.Runtime 构建了一个任意String,访问了方法java.lang.Runtime.getRuntime 方法,并创建了另外一个字符串来访问 java.lang.Runtime,从而开发可用的RCE payload。最终的payload 小于3kb,并由服务器接受为GET请求。
然而,绕过WAF并不容易。Peter H 发现经过大概500次构造请求和超过14个小时之后才找到一个入口点。不过他并未提供文本格式的最终payload,“在这种情况下,对Java和SpEL 能力有深入了解才能构建既能绕过Akamai WAF 还能在执行上下文中运作的payload。”
Akamai 提到,该绕过得以成功的原因在于研究人员使用了Akamai WAF 防护引擎的老旧版本。
Akamai 在2022年7月25日发布补丁,因此,运行最新引擎版本的客户并不受影响。
Akamai 指出,“Akamai 了解到一名安全研究员声称绕过了Akamai的WAF的研究报告。我们在本文发布数月前就发现了这个问题并发布更新。Akamai 威胁研究团队一直都在寻找新的攻击类型和研究成果,定期主动更新防护措施。Akamai 建议所有客户确保推动Akamai WAF 的防护引擎Adaptive Security Engine 处于最新状态,在理想情况下应该是自动更新至最新状态。”
研究人员尚未就Akamai的回应置评。
看我如何发现开源 WAF引擎ModSecurity 中的DoS 漏洞
【缺陷周话】第44期:Spring Boot 配置错误:不安全的 Actuator
研究员发现 Akamai配置不当漏洞,获得4.6万美元奖励
https://portswigger.net/daily-swig/akamai-waf-bypassed-via-spring-boot-to-trigger-rce
题图:Pexels License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。