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

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

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

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

工具目录

分类

查看所有分类
Loading categories
cve-2026-0300-audit — CVE-2026-0300(PAN-OS User-ID 认证门户暴露)的只读审计工具 | Kitploit
工具/GitHubGitHub/tailwindrg/cve-2026-0300-audit
云基础设施安全漏洞分析脚本与自动化配置审计网络安全DevSecOps
GitHubtailwindrg/cve-2026-0300-audit

cve-2026-0300-audit

CVE-2026-0300(PAN-OS User-ID 认证门户暴露)的只读审计工具

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-0300 审计工具

针对 CVE-2026-0300 的只读审计工具——这是 PAN-OS User-ID 认证门户(旧称“Captive Portal”)中存在于 PA 系列和 VM 系列防火墙上的未认证缓冲区溢出漏洞。

本仓库随 Tailwind Resource Group 安全公告 TRG-SA-2026-003 一同发布,提供以下内容:

  • audit_portal.py — 第 1 层:单防火墙审计
  • audit_fleet.py — 第 2 层:由 Panorama 驱动的机群扫描(并发)
  • panos_audit.py — 两个 CLI 共用的共享库

这些脚本是只读的。它们仅向 PAN-OS XML API 发出 show 类查询,绝不修改任何配置。API 密钥通过 X-PAN-KEY HTTP 头发送,而非作为 URL 查询参数,因此不会出现在 PAN 管理平面访问日志、TLS 检查代理日志或审计进程的参数中。

为什么需要这个工具

CVE 记录使用了现代功能名称“User-ID 认证门户”。而 PAN-OS XML 模式、CLI 配置项和文档 URL 路径仍沿用旧的 captive-portal 词汇。运维人员使用 show config running | match authentication-portal 审计机群时会静默漏掉所有配置,因为该字符串永远不会作为配置元素出现。本工具无论配置创建于何时,都会搜索符合模式规范的元素名称。

关于这一命名陷阱的完整 Tailwind 分析见 TRG-SA-2026-003《Captive Portal 的遗留足迹》。

环境要求

  • Python 3.10 或更高版本
  • 仅使用标准库——无需 pip install
  • 具有防火墙(或第 2 层场景下的 Panorama)读取权限的 PAN-OS API 密钥
  • 防火墙管理接口上需有 CA 签名(或运维人员信任)的证书;--insecure 仅用于一次性上线审计

第 1 层 — 单防火墙

root@kitploit:~
export PAN_API_KEY="<key>"
./audit_portal.py --hostname fw1.example.com

示例表格输出:

root@kitploit:~
vsys: vsys1
  configured:    True
  enabled:       True
  redirect_host: auth-portal.internal.example.com
  mode:          redirect
  bound:         ethernet1/3(internal-trust), ethernet1/4(guest)
  tls_verified:  True
  risk:          EXPOSED_LIKELY

其他输出格式:--output json 或 --output csv。

其他参数:--vsys <name> 用于单 vsys 审计,--timeout/--retries 用于上游响应缓慢的场景,--debug 用于在 stderr 输出详细的错误信息。

第 2 层 — Panorama 机群扫描

root@kitploit:~
export PAN_API_KEY="<panorama-key>"
./audit_fleet.py --hostname panorama.example.com --workers 16 --output csv > fleet-audit.csv

CSV 中的每一行对应一个设备-vsys,包含门户状态、重定向主机、模式、接口绑定和风险分级。脚本使用 Panorama 的 target=<serial> API 参数,因此不会直接连接受管防火墙——只需一次到 Panorama 的连接即可扫描整个机群。

值得关注的参数:

  • --workers N — 并发审计线程数(默认 8,最大 32)。1000 台设备的机群可在几分钟内完成扫描,而串行扫描则需要一个多小时。
  • --timeout、--retries — 每次 API 调用的设置。瞬态 URLError 和 HTTP 5xx 会以有界退避策略重试。
  • --exclude-disconnected — 默认情况下,断连设备会以 risk=DISCONNECTED 包含在结果中,以便在补丁窗口期内保持可见。使用此参数可将其排除。
  • --min-expected-devices N — 若 Panorama 返回的设备数少于 N,则在 stderr 输出警告。可用于在已知机群规模下检测响应截断。
  • --serial-filter '0007*' — 按序列号进行通配符过滤,以审计子集。
  • --debug — 在 stderr 输出每个设备的详细错误信息(包含上游 reason 字符串;默认关闭,以避免将主机名泄露到面向客户的 CSV 中)。

风险分级

输出中的 risk 列取以下值之一:

EXPOSED_LIKELY 是一个提示,而非最终判定——区域名称是运维人员的约定,而非强制规则。该脚本无法替代安全策略审查;它的作用是将机群输出按优先级排序,让注意力首先落在最需要关注的地方。

脚本能做什么——以及不能做什么

能:

  • 按 vsys 查询 <captive-portal> 配置块(模式元素名称始终为 captive-portal,无论 UI 命名或 PAN-OS 版本如何)。
  • 报告启用/禁用状态、重定向主机、模式以及按区域解析的接口绑定。
  • 通过区域名称启发式规则进行风险分级,使 EXPOSED_LIKELY 行在机群输出中优先显示。
  • 通过 X-PAN-KEY 头发送 API 密钥,使其不进入 URL 访问日志和进程参数。
  • 限制响应体大小(50 MB),以防 XML 解析器遭受实体扩展攻击。
  • 以有界退避策略重试瞬态错误。

不能:

  • 全面审查安全策略。门户是否可从不受信任的网络访问取决于策略规则、NAT 和区域绑定——运维人员必须根据审计输出完成该审查。
  • 通过网络探测测试可达性。仅进行纯配置审计。
  • 修改任何配置。所有 API 调用均为只读。

生成 PAN-OS API 密钥

PAN-OS API 密钥继承生成该密钥的用户的角色和权限。

重要注意事项:PAN-OS 中没有只读的 XML API 授权。

XML API 选项卡上的管理员角色权限按类别为二元启用/禁用——配置、操作请求、提交、导出、导入、报告、日志、User-ID Agent。为 XML API 启用配置将同时允许 show 和 set/edit/delete/move/rename/clone 操作。启用操作请求将允许任意 <request> 操作,包括 <request><restart>。Web UI 和 REST API 选项卡提供只读选项;XML API 选项卡则没有。

通过启用这些 XML API 类别创建的“审计用户”在设备上拥有完整的 XML API 写入权限。请将生成的密钥视为特权凭据:将其有效期限定在审计窗口内,存储在密钥管理器中,并在工作完成后禁用该用户。

PAN 官方参考:获取您的 API 密钥(PAN-OS XML API)。

通过 WebUI

在防火墙(或使用 audit_fleet.py 时的 Panorama)上:

  1. 创建管理员角色。 导航至 Device > Admin Roles(或 Panorama > Admin Roles)。点击 Add。

    • 将角色命名为例如 audit-config-and-op。
    • 在 Web UI 选项卡上,将所有权限设置为 None(审计用户无需 UI 访问权限)。
    • 在 XML API 选项卡上,启用配置和操作请求。保持提交、导出、导入、报告、日志和 User-ID Agent 为禁用状态。
    • 点击 OK。生成的角色将授予完整的 XML API 配置和操作请求权限——请参阅上述注意事项。
  2. 创建审计用户。 导航至 Device > Administrators(或 Panorama > Administrators)。点击 Add。

    • 名称:例如 audit-cve-2026-0300。
    • 设置强密码或绑定到认证配置文件。
    • 管理员类型:Role Based → 选择 audit-config-and-op。
    • 点击 OK,然后提交候选配置。
  3. 使用新用户的凭据生成 API 密钥。 PAN-OS 在 WebUI 中没有“生成 API 密钥”按钮——keygen 端点是受支持的路径。使用 POST 请求体,以免凭据被记录到 URL 访问日志中:

    root@kitploit:~
    read -rs AUDIT_PW; echo
    export PAN_API_KEY="$(curl -ksX POST "https://fw1.example.com/api/" \
      --data-urlencode "type=keygen" \
      --data-urlencode "user=audit-cve-2026-0300" \
      --data-urlencode "password=$AUDIT_PW" \
      | grep -oE '<key>[^<]+' | cut -c6-)"
    unset AUDIT_PW
    

    read -rs 读取密码时不会在终端回显,也不会写入 shell 历史。脚本从环境中读取生成的 PAN_API_KEY,并通过 HTTP 头发送——密码和密钥都不会出现在 URL 访问日志或脚本运行时的 输出中。

加固说明

  • 确保密码和密钥不进入 shell 历史。 read -rs 可覆盖密码。对于 PAN_API_KEY 中的密钥,建议通过上述代码片段交互式设置,而非从文件粘贴。如果必须从文件加载,请在该会话中使用 set +o history。
  • 在防火墙管理接口上使用 CA 签名证书。 两个审计脚本中的 --insecure 参数会完全禁用 TLS 主机名校验和证书验证。路径上的任何攻击者都可以对审计响应进行中间人攻击,并对已被攻陷的设备报告 portal_enabled=False。audit_fleet.py 脚本在进行机群扫描时要求同时使用 --accept-mitm-risk 和 --insecure,因为被污染响应的爆炸半径覆盖整个机群。
  • 完成后轮换密钥。 禁用或删除审计用户将使该用户下生成的所有密钥失效。

退出码

  • 0 — 所有被审计的 vsys 上均未启用门户
  • 2 — 未找到 vsys(瞬态或不受支持的配置)
  • 3 — 至少一个 vsys 上启用了门户(需要审查)
  • 4 — API 调用失败(认证、TLS、网络)

“门户已启用”时返回非零退出码是有意为之——这使您可以将脚本接入需要明确信号的 CI / 机群扫描流水线。

许可证

根据 Apache License 2.0 版本许可。完整条款见 LICENSE。

允许商业使用;需注明出处(衍生作品中保留版权声明和许可证文件)。

版权所有 © 2026 Tailwind Resource Group。

另请参阅

  • TRG-SA-2026-003 — Tailwind Resource Group 关于 CVE-2026-0300 的安全公告
  • PAN PSIRT — https://security.paloaltonetworks.com/CVE-2026-0300
  • PAN 最佳实践(限制门户访问) — https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA14u000000CqbiCAC
  • Tailwind Resource Group — https://tailwindrg.com
下载工具
标签含义
INFO_NOT_CONFIGURED设备上没有 <captive-portal> 配置块。不在 CVE-2026-0300 影响范围内。
INFO_DISABLED门户已配置但 enabled=no。易受攻击的代码路径未激活。
REVIEW_POLICY_NO_BINDINGS门户已启用,但配置中未找到接口绑定。请通过 WebUI 验证。
EXPOSED_LIKELY门户已启用并绑定到名称暗示不受信任暴露的区域(untrust、dmz、guest、external、internet、wan、public)。应优先调查。
REVIEW_POLICY门户已启用并绑定到内部命名的区域。需检查安全策略以确认可达性。
X-PAN-KEY
ps auxww
  • 审计工作完成后禁用该用户。 导航至 Device > Administrators,找到 audit-cve-2026-0300,点击 Delete(或禁用该用户)。提交。这将使该用户生成的所有密钥失效。