Apache Struts 2 是一个用于开发 Java EE Web 应用程序的开源 Web 应用框架,它是 Struts 框架的第二代,于 2006 年 10 月 10 日首次发布。Struts 框架的设计旨在帮助创建采用 MVC 架构的 Web 应用程序。
Apache Struts 是一个广泛使用的框架,2017 年超过 65% 的《财富》100 强公司使用了 Apache Struts 框架。
该漏洞由 NVD 于 2017 年 3 月 10 日首次发布,被赋予了最高级别的 Base Score 10,即严重等级。导致其获得最高漏洞评分的主要因素是:应用程序可以通过网络被利用,复杂度极低,且对完整性和可用性造成高影响。
该漏洞允许攻击者通过将对象图导航库(OGNL)表达式引入 HTTP 头,在应用程序上执行远程代码执行(RCE)。
受影响的有漏洞的框架版本为 Apache Struts-2 版本 2.3.x(低于 2.3.32)和 2.5.x(低于 2.5.10.1)。
.png)
存在漏洞的代码位于 Jakarta Multipart Parser 中。为了实施攻击,攻击者利用了 LocalizedTextUtil.findText 函数中的漏洞,该函数将提供的消息中的 ${…} 解释为对象图导航库(OGNL)表达式。攻击者随后可以利用这些 OGNL 表达式执行系统命令,并可能泄露敏感文件(如 /etc/password、/etc/shadow)的内容,从而完全控制攻击者。此外,应用程序还会返回攻击者所运行命令的输出,这进一步方便了攻击者。
下图展示了包含 OGNL 表达式的 HTTP 请求,攻击者借此进行攻击。

2017 年 3 月,当 Apache Struts 框架中首次发现漏洞 CVE-2017-5638 时,Apache 基金会发布了该漏洞的补丁。但 Equifax 并未对易受攻击的系统应用补丁,因为用于发现易受攻击系统的扫描并未生效。
从 2017 年 5 月到 7 月,攻击者成功访问了多个 Equifax 数据库,暴露了数百万人的信息。此次攻击影响了 1.43 亿人,并泄露了超过 20 万人的信用卡信息。
攻击者在 76 天内持续进行攻击而未引起注意。
在发生重大数据泄露事件后,该公司花费了 14 亿美元来升级其安全措施。
频繁更新
更新应用程序中使用的所有组件,包括框架
频繁进行渗透测试
设立漏洞赏金计划