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/rz1027/cve-2026-20896
Análise de VulnerabilidadesExploraçãoSegurança WebTestes de PenetraçãoAutenticaçãoConfiguração IncorretaAprendizado e EducaçãoRed Teaming
GitHubrz1027/cve-2026-20896

CVE-2026-20896

PoC público e detector para CVE-2026-20896 ("Gitea Docker: Um Cabeçalho, Qualquer Utilizador")

Ver Repositório
61há 1 mêsAinda 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
Site

CVE-2026-20896

A imagem Docker oficial do Gitea (até a versão 1.26.2 inclusive) vem com REVERSE_PROXY_TRUSTED_PROXIES = * na sua configuração padrão. Se você ativar o login por proxy reverso, esse curinga significa que todo IP de origem é tratado como um proxy confiável, então qualquer pessoa que consiga alcançar a porta pode enviar um cabeçalho X-WEBAUTH-USER e entrar como quem quiser. Sem senha, sem token.

Reportei isso ao Gitea e foi corrigido em 1.26.3 / 1.26.4. Este repositório é o meu próprio relatório, um PoC funcional e um verificador. É para um bug corrigido e público.

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-20896 (relator: rz1027)
  • Aviso do Gitea: https://github.com/go-gitea/gitea/security/advisories/GHSA-f75j-4cw6-rmx4
  • Correção / notas de versão: https://blog.gitea.com/release-of-1.26.3-and-1.26.4/

O bug

O Gitea suporta autenticação por proxy reverso: você o coloca atrás de um proxy que define X-WEBAUTH-USER, e o Gitea confia nesse cabeçalho para o nome de usuário. Isso é válido desde que apenas o seu proxy possa defini-lo. A configuração que deveria garantir isso é REVERSE_PROXY_TRUSTED_PROXIES, uma lista de permissões de IP. O Gitea só honra o cabeçalho quando o IP de origem da requisição está dentro dela.

O padrão seguro documentado, o do app.example.ini, é 127.0.0.0/8,::1/128: apenas loopback, então, de fábrica, apenas o proxy local é confiável. A imagem oficial do Docker não usa isso. O template do app.ini define * como valor fixo (docker/root/etc/templates/app.ini:55, e docker/rootless/etc/templates/app.ini:52 para a imagem rootless). * corresponde a qualquer IP de origem, então a verificação da lista de permissões não faz nada. Ative o login por proxy reverso e agora qualquer pessoa que alcance a porta pode enviar o cabeçalho, não apenas o seu proxy. Com o registro automático ativado, a conta é criada na hora. Envie o nome de usuário de um administrador e você é o administrador.

Portanto, o código não está errado; o padrão empacotado está, e isso é específico das imagens Docker. Uma instalação binária ou compilada por conta própria que segue o app.example.ini mantém o padrão de loopback e não é afetada.

Experimente

Requer Docker e Python 3 (apenas biblioteca padrão, nada para instalar).

root@kitploit:~
docker compose up -d          # boots vulnerable gitea/gitea:1.26.2
# give it ~30-60s to finish first-run setup, then:
python3 poc.py                # random new victim, shows auto-registration
python3 poc.py http://localhost:3000 admin   # impersonate a chosen username
docker compose down -v        # clean up

Veja como fica com a imagem incluída:

root@kitploit:~
1) /user/settings with no header        -> HTTP 303   (redirect to login = not authed)
2) /user/settings with X-WEBAUTH-USER    -> HTTP 200
   logged in as 'pocadmin' - no password, no token, any source IP
3) /pocadmin profile page                -> HTTP 200   (account created on the fly)

O bypass funciona na sessão web, não na API de token em /api/v1/..., que ignora o cabeçalho.

Verifique sua própria instância

detect.py envia uma sondagem inofensiva e a compara com uma requisição normal. Ele não toca em nada.

root@kitploit:~
python3 detect.py https://gitea.example.com

Ele imprime VULNERABLE, looks-safe ou inconclusive. Execute-o apenas contra algo que você possua ou esteja autorizado a testar.

Correção

Atualize para 1.26.3 / 1.26.4 ou posterior. A autenticação por proxy reverso agora é opt-in e a imagem não inclui mais o curinga. Se você ainda não puder atualizar, defina REVERSE_PROXY_TRUSTED_PROXIES para o IP ou CIDR real do seu proxy (nunca *), ou desative ENABLE_REVERSE_PROXY_AUTHENTICATION se não o utiliza.

Linha do tempo

  • 2026-05-26: Relatado em particular ao Gitea.
  • 2026-07-03: CVE-2026-20896 publicado, creditado a rz1027.
  • Corrigido no Gitea 1.26.3 / 1.26.4.

Créditos

Encontrei este bug e o reportei ao Gitea em 2026-05-26. Sou o relator citado no aviso do Gitea, GHSA-f75j-4cw6-rmx4.

Algumas matérias creditaram o repositório Exploitarium por isso em vez de mim. Isso está errado, e é uma coisa separada do que aquele repositório publicou. Desde então, consegui que vários desses blogs fossem corrigidos; alguns ainda estão errados.

Licenciado sob MIT. Veja LICENSE.

Baixar ferramenta