CVE-2024-56509 是一项中等严重性的漏洞,影响了所有 Wget 版本,包括 1.24.5 和 1.25.0。在研究 GNU Wget 的 CVE-2024-38428 时,我们发现了这项新零日漏洞。该漏洞可能导致各种类型的攻击,包括钓鱼、SSRF 和中间人攻击(MiTM)。这些攻击可能会导致严重后果,如资源限制绕过和敏感信息泄露。
一旦发现这项漏洞,我们的团队负责披露给 Wget 维护者。于 11 月 11 日发布的补丁已包含在 Wget 1.25.0 中。
受影响的 Wget 版本
CVE-2024-56509 影响所有 Wget 版本,包括 1.24.5 和 1.25.0。用户建议更新 Wget 到版本 1.25.0 以避免此漏洞。
是否受 CVE-2024-56509 影响
该 CVE 只在使用易受攻击的 Wget 版本时才可被利用,且攻击者必须能够控制在简化 HTTP URL 中的凭证。以下是一个示例:
详解与利用
考虑一个应用程序,它使用 Wget 访问远程资源,并通过简化 HTTP URL 将用户凭证传递给 Wget。例如:
1 | wget user_input@host/file |
应用程序应该对输入进行清理,确保不包含允许命令注入的字符。但是,它应该允许用户输入冒号 – 这是 userinfo 部分允许的字符。但是,这可能是危险的。让我们看看 Wget 在接收类似于 user:input@example.com/filename 的 URL 时会发生什么 – 这应该会发出 HTTP 请求到 example.com,请求文件 filename。
在解析命令行参数后,程序首先检查是否提供了简化格式的 URL。如果提供了简化格式的 URL,例如 wget user:input@example.com/file,则会发出 FTP 请求到域 user,请求文件 input@example.com/file。这行为并不期望,并且攻击者可能利用此进行攻击。
我们已负责披露此漏洞,并发布了补丁。补丁移除了对 FTP 简化格式的支持,因为它已经被认为是过时且不受其他类似工具支持。
从以下示例中可以看出,这种漏洞可能导致各种危险攻击。然而,我们决定给予其中等 CVSS 分数。使用 HTTP 简化格式与用户输入结合使用非常不常见,因此在现实场景中利用此 CVE 的可能性不大。
实例
让我们看几个例子,了解这种漏洞如何被利用。
钓鱼攻击
此漏洞还可以用于钓鱼攻击。攻击者可以让受害者访问如下 URL:
1 | maliciousdomain:@reliableserver |
受害者看到可信的主机名 reliableserver,可能会信任此链接。但是,实际上链接会将用户转向攻击者的域 maliciousdomain。攻击者可以提供一个看似可信的文件,但实际上执行恶意代码时会被打开。
中间人攻击
此漏洞还可以用于中间人攻击。攻击者可以提供如下 URL:
1 | maliciousdomain:@reliableserver |
受害者看到可信的主机名 reliableserver,可能会信任此链接。但是,实际上链接会将用户转向攻击者的域 maliciousdomain。攻击者可以在用户和可信主机之间进行代理,执行中间人攻击。
数据泄露
最后,漏洞还可能导致数据泄露。应用程序可能会提供错误日志,如果请求失败。攻击者可以通过提供精心编制的凭证导致请求失败,并泄露原始主机名。敏感数据也可能通过其他形式的攻击,如 SSRF 或 MiTM 泄露。
解决方法
为了避免此漏洞,用户应更新 Wget 到版本 1.25.0。使用简化 HTTP URL 时应对输入进行清理,并确保不包含允许命令注入的字符。同时,应用程序应允许用户输入冒号,但避免使用此字符可能会导致攻击。
通过这些措施,可以显著降低利用此漏洞的风险,确保系统安全。