
🫖 PoC de validação de RCE CVE-2026-60004 direcionado a um único alvo no Gitea
Uma ferramenta de validação direta e de alvo único para a vulnerabilidade de execução remota de código no Git-hook
diffpatchdo Gitea.
Este repositório contém o validador AfterDark focado: um script, um alvo, uma execução. Não há subcomandos de descoberta, reconhecimento, verificação ou outros.
Este projeto é fornecido apenas para testes de segurança autorizados, validação defensiva, pesquisa e educação. Use-o exclusivamente em sistemas que você possui ou para os quais tenha permissão escrita explícita para avaliar.
Os autores e colaboradores não são responsáveis por uso indevido, danos, interrupção de serviço, perda de dados ou consequências legais. Você é responsável por cumprir as leis aplicáveis, contratos, regras de engajamento e requisitos de divulgação.
Este é um proof of concept ativo de RCE. Ele cria uma conta, cria um repositório privado, grava um marcador de contrato e executa um comando como o usuário do sistema operacional do Gitea. Trate-o de acordo. 🛡️
A CVE-2026-60004 afeta o fluxo de trabalho diffpatch de repositórios do Gitea. Um atacante com acesso de escrita ao repositório pode enviar conteúdo de patch controlado que instala e aciona um Git hook, resultando em execução de comandos como a conta de serviço do Gitea.
| Item | Detalhe |
|---|---|
| Produto | Gitea |
| Versões afetadas | >= 1.17.0, < 1.27.1 |
| Versão corrigida | 1.27.1 |
| Impacto | Execução remota de comandos como o usuário do SO do Gitea |
| Aviso upstream | GHSA-rcr6-4jqh-j84m |
Forgejo e outros forks exigem revisão manual de implementação e não são tratados automaticamente como afetados.
Cada execução realiza um fluxo de trabalho fixo:
post-index-change criado por meio do diffpatch.id por padrão.A ferramenta aceita apenas um único alvo. Não possui modos de lista de alvos, curinga, varredura em massa ou descoberta passiva.
PATHO script usa apenas a biblioteca padrão do Python. Nenhum pip install é necessário.
git clone https://github.com/InfoSec-DB/CVE-2026-60004-Gitea-RCE-PoC.git
cd CVE-2026-60004-Gitea-RCE-PoC
python3 scanner.py --help
python3 scanner.py \
--contract-number ENG-2026-001 \
--username audit-eng-2026-001 \
--password 'use-a-unique-disposable-password' \
https://gitea.example
Opções curtas também estão disponíveis:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
https://gitea.example
🚨 A senha é fornecida na linha de comando e exibida no painel de resultados final. Use apenas uma credencial de teste descartável e única. Esteja ciente de que os argumentos da linha de comando podem ser retidos no histórico do shell ou temporariamente visíveis para ferramentas locais de inspeção de processos.
O comando padrão é id. Um comando personalizado de escopo restrito pode ser fornecido com --cmd:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--cmd 'uname -a' \
https://gitea.example
Comandos personalizados intencionalmente não têm tempo limite. O validador aguarda até que o comando remoto termine, portanto, evite comandos interativos ou de longa duração, a menos que o engajamento os exija especificamente.
Por padrão, cada execução grava em:
afterdark-results/<contract>/<UTC timestamp>/
Você pode selecionar uma raiz diferente ou um diretório de execução exato:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--results-root ./engagement-evidence \
https://gitea.example
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--output-dir ./engagement-evidence/run-01 \
https://gitea.example
Cada execução cria arquivos privados 0600 e recusa sobrescrever resultados existentes:
confirmation.json — alvo, resultado da versão, nome da conta, carimbos de data/hora, comando, código de retorno e artefatos capturadosconfirmation.command-output.txt — saída completa do comando remotoAs evidências podem conter informações sensíveis do engajamento. Não as envie para o Git. O .gitignore incluído exclui os caminhos de resultados padrão e nomes de arquivos de evidência comuns.
O validador não exclui automaticamente artefatos do lado do servidor. Após a avaliação, um administrador autorizado deve:
afterdark-* gerado/tmp/gitea-validation-<contract>/client.txt1.27.1 ou posteriorUm resultado bem-sucedido prova a execução de comandos como a conta de serviço do Gitea. Ele não prova por si só acesso root, persistência, movimento lateral ou comprometimento completo do host.
idOs testes exercitam a análise e a construção do PoC sem fazer solicitações de rede:
python3 -m unittest discover -s tests -v
Melhorias que tornem o validador mais seguro, mais confiável ou mais fácil de limpar são bem-vindas. Não envie detalhes de alvos reais, credenciais, evidências privadas ou payloads destrutivos.
Para vulnerabilidades nesta ferramenta, siga SECURITY.md.
Construído para validação de segurança cuidadosa e vinculada a contratos. 🫖🛡️