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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-34908-check — 安全检测 UniFi OS 服务器是否容易受到 CVE-2026-34908 的攻击。 | Kitploit
工具/GitHubGitHub/bishopfox/cve-2026-34908-check
侦察漏洞扫描器漏洞利用Web应用程序漏洞利用信息收集渗透测试
GitHubbishopfox/cve-2026-34908-check

CVE-2026-34908-check

安全检测 UniFi OS 服务器是否容易受到 CVE-2026-34908 的攻击。

查看仓库
66423个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

UniFi OS 服务器 未授权 RCE 链检测脚本

针对 UniFi OS 服务器(≤ 5.0.6)中未认证远程代码执行链的安全检测器,该漏洞披露于 Ubiquiti 安全公告 064:

CVE类别链中的作用
CVE-2026-34908 / CVE-2026-34909不恰当的访问控制 / 路径遍历认证网关绕过(立足点)
CVE-2026-34910不恰当的输入验证 → 命令注入通过绕过实现未认证 RCE

已在 UniFi OS 服务器 5.0.8 中修复。

运行是否安全?

是的。该检测器专为生产环境和评估用途设计:

  • 不执行任何命令。 探测请求会到达存在漏洞的端点,但缺少必需参数,因此处理程序会拒绝缺失的输入,我们通过该验证错误确认漏洞。
  • 不改变目标状态。 每个请求都是普通的 GET 请求。
  • 误报保护。 判定为 VULNERABLE 需要同时满足:认证绕过程序到达了漏洞处理程序,并且基线请求(相同端点,无绕过)被正确拒绝并返回 401。

工作原理

UniFi OS 使用 nginx 作为服务前置,通过子请求强制进行身份验证。该认证检查将任何 原始 URI 以 /api/auth/validate-sso/ 开头的请求视为公共请求,但 nginx 使用 规范化 URI 路由到后端(它会进行百分比解码 %2f→/ 并折叠 ../)。例如如下请求:

root@kitploit:~
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package

因此被当作公共请求(原始前缀),但却被路由到需要认证的内部软件包更新端点(规范化路径)。由于未提供 pkg_name,该端点回复 query param pkg_name required — 证明绕过成功且漏洞处理程序可达。

检测器还会向同一端点发送一个不带绕过的基线请求,并要求其返回 401,然后才声明主机存在漏洞。该检查直接测试漏洞行为 — 判定为 VULNERABLE 意味着绕过确实到达了接收端。

在任何“非漏洞”判定前确认目标为 UniFi OS

每当探测器未能明确确认为 VULNERABLE 或 PATCHED 时,检测器会获取根页面并查找 UniFi OS 管理门户指纹( <title>UniFi OS</title>、window.UNIFI_OS_MANIFEST、id="portal-root"、 id="site-manager_portal-container")。这也适用于 401 响应:对绕过强制认证的 UniFi OS 主机判定为 INCONCLUSIVE,但对于仅返回 401 且不带指纹的非 UniFi 代理,则报告为 UNAFFECTED。因此,每个“非漏洞”结果都基于指纹:存在标记 → INCONCLUSIVE;无标记 → UNAFFECTED(CVE 不适用)。

要求

  • Python 3.7+,仅使用标准库 — 无需第三方包。

使用方法

root@kitploit:~
# single host (default port 11443)
./cve_2026_34908_check.py 192.168.1.10

# explicit port / URL forms
./cve_2026_34908_check.py host-a:11443 https://host-b

# scan a list, one target per line ('#' comments allowed), compact output
./cve_2026_34908_check.py -f targets.txt --brief

# machine-readable output for pipelines
./cve_2026_34908_check.py -f targets.txt --json > results.json

选项

示例

存在漏洞的控制台(详细模式,默认)。第二行是判定的详细说明;[!] 标记和 VULNERABLE 在 TTY 上显示为红色:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10
[!] 192.168.1.10:11443: VULNERABLE
      auth bypass reached the vulnerable handler (no command executed); baseline correctly 401

已修补的控制台(5.0.8+):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.11
[+] 192.168.1.11:11443: PATCHED
      nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior

探测无法分类的已确认 UniFi OS 主机 → INCONCLUSIVE。详细行区分两种情形(认证已强制 与 意外响应):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.12 192.168.1.13
[?] 192.168.1.12:11443: INCONCLUSIVE
      bypass blocked / auth enforced (HTTP 401) on a confirmed UniFi OS host — not confirmed vulnerable
[?] 192.168.1.13:11443: INCONCLUSIVE
      UniFi OS detected, but probe returned an unexpected response: HTTP 302 text/html

根本不是 UniFi OS 的主机 → UNAFFECTED(该公告不适用):

root@kitploit:~
$ ./cve_2026_34908_check.py 203.0.113.9:443
[-] 203.0.113.9:443: UNAFFECTED
      no UniFi OS web fingerprint on / (probe HTTP 404) — target is not a UniFi OS Server

扫描列表,每个主机单行对齐(--brief)。如果任何主机为 VULNERABLE,则退出状态为 1,否则为 0 — 在脚本中很方便:

root@kitploit:~
$ ./cve_2026_34908_check.py -f targets.txt --brief; echo "exit: $?"
VULNERABLE    192.168.1.10:11443
PATCHED       192.168.1.11:11443
INCONCLUSIVE  192.168.1.12:11443
UNAFFECTED    203.0.113.9:443
ERROR         10.0.0.1:11443  timeout
exit: 1

用于管道的机器可读输出(--json)。每个结果包含 verdict 以及背后的 bypass.state/bypass.detail;ERROR 结果包含 error 字段而非 bypass:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10 192.168.1.11 10.0.0.1 --json
[
  {
    "target": "192.168.1.10:11443",
    "bypass": {
      "state": "vulnerable",
      "detail": "auth bypass reached the vulnerable handler (no command executed); baseline correctly 401"
    },
    "verdict": "VULNERABLE"
  },
  {
    "target": "192.168.1.11:11443",
    "bypass": {
      "state": "patched",
      "detail": "nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior"
    },
    "verdict": "PATCHED"
  },
  {
    "target": "10.0.0.1:11443",
    "verdict": "ERROR",
    "error": "timeout"
  }
]

判定结果

退出码

代码含义
0无目标返回 VULNERABLE
1至少一个目标为 VULNERABLE
2用法错误(参数错误 / 无法读取目标文件)

局限性

  • INCONCLUSIVE 并非安全保证 — 它确认了 UniFi OS 主机但无法分类(绕过被强制认证,或意外响应)。经过严格过滤或由意外代理前置的主机可能无法仅通过网络分类。尽可能确认运行版本。
  • UNAFFECTED 意味着根页面未携带 UniFi OS 门户指纹(包括返回 401 但无指纹的主机)。因此,隐藏在反向代理后面且该代理剥离或重写门户 HTML 的 UniFi OS 控制台可能会被误报;如果预期目标是 UniFi OS,请直接确认。
  • 检测器报告漏洞行为的可达性。

修复措施

将 UniFi OS 服务器更新到 5.0.8 或更高版本。修复添加了 nginx 原始 URI 与规范化 URI 的比较(关闭认证绕过)以及软件包更新路径中的输入验证(关闭命令注入)。

许可证

此代码根据 MIT 许可证 分发。

法律免责声明

未经事先相互同意,使用此工具攻击目标是违法的。最终用户有责任遵守所有适用的地方、州和联邦法律。开发人员不承担任何责任,并且不对因使用本程序而导致的任何误用或损害负责。

参见

  • Ubiquiti Security Advisory Bulletin 064
  • Bishop Fox 博客:完整技术分析
下载工具
探测响应判定
200 + 处理程序错误标志VULNERABLE
400(nginx 拒绝差异)PATCHED(5.0.8+)
401,存在 UniFi OS 指纹INCONCLUSIVE(认证已强制 / 绕过被阻止)
401,无 UniFi OS 指纹UNAFFECTED(不是 UniFi OS 服务器)
其他响应,无 UniFi OS 指纹UNAFFECTED(不是 UniFi OS 服务器)
其他响应,存在 UniFi OS 指纹INCONCLUSIVE(意外响应)
标志描述
targets一个或多个 host、host:port 或 https://host:port
-f, --targets-file FILE从文件读取目标(每行一个;支持 # 注释)
--brief每个目标单行对齐输出 — 适用于扫描大量主机
--json输出结构化 JSON 结果
--timeout SECS每个请求的超时时间(默认:10)
--no-color禁用彩色输出(同时遵循 NO_COLOR 和非 TTY 环境)
判定含义
VULNERABLE认证绕过以未认证方式到达漏洞处理程序。请修补至 5.0.8+。
PATCHEDnginx 拒绝了规范化路径差异(5.0.8+ 行为)。
UNAFFECTED根页面无 UniFi OS 门户指纹 — 目标不是 UniFi OS 服务器,因此公告不适用。包括返回 401 但无指纹的主机(例如拒绝所有请求的不相关代理)。
INCONCLUSIVE确认为 UniFi OS 主机但无法分类 — 请手动验证版本。判定的详细行会说明情况:(a) 绕过被阻止/认证已强制(401),或 (b) 探测返回了意外响应。
ERROR连接/超时/TLS 失败。