Apache Struts 2 中发现新的严重 RCE 漏洞CVE-2023-50164

💡 原文中文,约1800字,阅读约需5分钟。
📝

内容提要

NIST更新了CVE,反映了struts-core中的新路径遍历漏洞。建议升级Struts版本以修复漏洞。漏洞允许路径遍历,可能导致远程代码执行。演示了如何利用漏洞,需要有漏洞版本的Struts库和不安全代码。更新到最新版本的Struts很重要,因为相对路径会被自动去掉。

🔎

延伸解读

漏洞利用的两个必要条件

文章强调,利用CVE-2023-50164需要同时具备存在漏洞的Struts版本和不安全的文件上传代码。演示中的不安全代码将用户控制的uploadFileName直接拼接到上传目录,且目录路径末尾的斜线缺失时,攻击者仍可能越界。这意味着仅升级Struts版本是必要的,但审查上传逻辑同样重要,不能完全依赖框架修复。

与Equifax漏洞的严重性对比

文章将CVE-2023-50164与2017年导致Equifax事件的Struts漏洞对比,指出新漏洞虽然CVSS评分高达9.8,但严重性相对较低,因为利用需要不安全的代码和特定版本。这一对比有助于读者理解:高评分并不等同于必然造成大规模影响,实际风险取决于应用代码是否提供了可利用的条件。

升级版本的具体修复作用

文章建议将Struts升级到2.5.33或6.3.0.2及以上版本,并解释最新版本会自动去掉相对路径。这意味着修复不仅阻止了路径遍历,还减少了对代码中手动检查的依赖。对于使用旧版本的用户,升级是直接有效的缓解措施,但文章也提醒,仍需确保上传代码本身没有其他不安全写法。

❓

Q&A

CVE-2023-50164 漏洞的严重程度如何?

该漏洞的 CVSS 严重程度评分为 9.8,属于严重漏洞。不过,其严重性低于 2017 年的 Equifax 漏洞,因为利用该漏洞需要不安全的代码和存在漏洞的 Struts 版本。

如何修复 Apache Struts 的 CVE-2023-50164 漏洞?

将 Struts 版本升级到 2.5.33 或 6.3.0.2(或更高版本),具体取决于当前使用的基本版本。更新到最新版本很重要,因为相对路径会被自动去掉,减少安全风险。

CVE-2023-50164 漏洞的利用原理是什么?

该漏洞允许在文件上传时进行路径遍历。攻击者可以通过提供相对路径(如 ../)将文件上传到指定上传文件夹之外,甚至可能将文件放置在应用程序所服务的文件夹内,从而导致远程代码执行。

利用 CVE-2023-50164 漏洞需要满足哪些条件?

利用该漏洞需要同时具备两个条件:使用存在漏洞版本的 Struts 库,以及应用程序中存在不安全的代码(例如未对上传文件名进行安全处理)。

能否演示一下如何利用 CVE-2023-50164 漏洞上传恶意文件?

可以。使用 curl 命令向上传接口发送请求,例如:curl http://localhost:9999/struts-vuln-poc/upload.action -F "Upload=@./payload/rogue.jsp" -F "uploadFileName=../src/main/webapp/rogue.jsp"。这会将 rogue.jsp 上传到 webapp 目录,之后访问该文件即可触发。

为什么更新 Struts 到最新版本能减轻路径遍历风险?

因为最新版本的 Struts 会自动去掉相对路径,从而防止攻击者通过相对路径跳出指定上传文件夹。这样即使代码中没有手动检查,也能降低安全风险。

🏷️

标签

➡️

继续阅读