目标
PAN OS 10.2.x < 10.2.13-h3
PAN OS 11.0.x < 11.1.6-h1
PAN OS 11.2.x < 11.2.4-h4
解释
CVE-2025-0108是在 Palo Alto Networks PAN-OS 防火墙管理界面中发现的一个身份验证绕过漏洞。它是由 Assetnote 研究团队在分析CVE-2024-0012 和 CVE-2024-9474补丁时发现的。
先前的漏洞(CVE-2024-0012 和 CVE-2024-9474)被攻击者利用,通过禁用 PAN-OS 防火墙来获取 root 权限,而研究团队在分析这些漏洞的修补过程时,发现 PAN-OS 管理界面中存在一个漏洞,这导致了新的身份验证绕过漏洞 CVE-2025-0108。
该漏洞是通过利用Nginx → Apache → PHP 的复杂身份验证处理过程中出现的路径混淆和双重 URL 解码问题
来绕过身份验证的。 PAN-OS 的管理界面通过以下方式处理 Web 请求:
1. Nginx 步骤
接收客户端的请求并X-pan-AuthCheck设置标头以确定是否需要身份验证。此后,包含特定路径(包括)/unauth/的请求可以被视为不需要身份验证。
if ($uri~ ^\/unauth\/.+$) {
set$panAuthCheck'off';
}
这会导致/unauth/包含路径的请求X-pan-AuthCheck: off被设置并被视为不需要身份验证。
2. Apache 步骤
重新处理从 Nginx 转发的请求并mod_rewrite通过 重写特定路径。
DirectorySlashoff
RewriteEngineon
RewriteRule ^(.*)(\/PAN_help\/)(.*)\.(css|js|html|htm)$ $1$2$3.$4.gz [QSA,L]
AddEncoding gzip .gz
Options Indexes FollowSymLinks
Requireall granted
3. PHP 步骤
根据从 Apache 传递的请求,它确定该请求是否真正经过身份验证并处理该请求。
if (
$_SERVER['HTTP_X_PAN_AUTHCHECK'] != 'off'
&& $_SERVER['PHP_SELF'] !== '/CA/ocsp'
&& $_SERVER['PHP_SELF'] !== '/php/login.php'
&& stristr($_SERVER['REMOTE_HOST'], '127.0.0.1') === false
) {
// ... check authentication ...
}
如果请求传递给 PHP 应用程序X-pan-AuthCheck: off,则认为不需要身份验证。
Apache 的路径重新解释问题
Apache RewriteRule在处理时执行内部重定向,这涉及再次解码 URL。
RewriteRule (.*)\.abc$ $1 [L]
通过利用双重解码问题,攻击者可以尝试使用双重 URL 编码来绕过身份验证。
攻击者可以通过发送如下请求来绕过身份验证: