Apache Struts 2.x <= 2.5.20 多个漏洞

critical Nessus 插件 ID 139607

简介

Apache Struts installed on the remote host is affected by multiple vulnerabilities.

描述

远程主机上安装的 Apache Struts 版本为低于 2.5.20(含)的 2.x。因此,该应用程序受到多个漏洞的影响:

- 强制使用 Apache Struts 框架时,会对分配给某些标签属性(如 id)的属性值执行双重评估,因此有可能传入一个值,该值将在呈现标签属性时再次评估。通过精心构建的请求,这可导致远程代码执行 (RCE)。仅在有待评估的表达式引用原始且未经验证的输入(攻击者可通过构建相应请求直接修改此输入)时,在 Struts 标签属性内强制执行 OGNL 评估,便会造成此问题。示例:如果攻击者能够修改请求中的 skillName 属性,列出可用的 Employees,从而无需进一步验证即可将原始 OGNL 表达式传递给 skillName 属性,那么在因为该请求而呈现标签时,skillName 属性中包含的已提供 OGNL 表达式就会得以评估。使用双重评估的机会是自 Struts 2.0.0 起的设计使然,如果操作正确,这是一款有用的工具,最引人注意的是,其仅引用给定表达式中经过验证的值。但是,引用表达式中未经验证的用户输入时,可能会注入恶意代码。经过持续努力,Struts 框架中包含变通方案,以限制注入表达式的影响,但在 Struts 2.5.22 之前的版本中,攻击向量暂未解决,本报告对此进行了介绍。此问题类似于:S2-029 和 S2-036。(CVE-2019-0230)

- 当上传文件至 Action,而 Action 会暴露使用 getter 的文件时,攻击者可能会操纵该请求,从而将上传文件的工作副本设置为只读。因此,无法对该文件执行后续操作,并出现错误。还可能将 Servlet 容器的临时目录设置为只读,从而导致后续上传操作失败。在 Struts 2.5.22 之前的版本中,java.io.File 和 java.nio.File 类型的堆栈可访问值(如 Action 属性)以及这些标准库程序包中的其他类未受到框架的适当保护,以拒绝访问潜在有害的底层属性。(CVE-2019-0233)

请注意,Nessus 尚未测试这些问题,而是只依靠应用程序自我报告的版本号。

解决方案

Upgrade to Apache Struts version 2.5.22 or later or apply the workarounds as referenced in in the vendor security bulletins.

另见

https://cwiki.apache.org/confluence/display/WW/S2-059

https://cwiki.apache.org/confluence/display/WW/S2-060

插件详情

严重性: Critical

ID: 139607

文件名: struts_2_5_22.nasl

版本: 1.8

类型: local

代理: windows, macosx, unix

系列: Misc.

发布时间: 2020/8/14

最近更新时间: 2022/12/6

配置: 启用全面检查

支持的传感器: Frictionless Assessment Agent, Nessus Agent, Nessus

风险信息

VPR

风险因素: High

分数: 8.4

CVSS v2

风险因素: High

基本分数: 7.5

时间分数: 6.2

矢量: CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P

CVSS 分数来源: CVE-2019-0230

CVSS v3

风险因素: Critical

基本分数: 9.8

时间分数: 9.1

矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

时间矢量: CVSS:3.0/E:F/RL:O/RC:C

漏洞信息

CPE: cpe:/a:apache:struts

可利用: true

易利用性: Exploits are available

补丁发布日期: 2019/11/19

漏洞发布日期: 2020/8/11

可利用的方式

Metasploit (Apache Struts 2 Forced Multi OGNL Evaluation)

参考资料信息

CVE: CVE-2019-0230, CVE-2019-0233