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-2026-52813-Gogs-RCE — CVE-2026-52813 (Gogs Path Traversal → Git Hooks RCE) writeup defensivo: análise de causa raiz e de patch, regras de detecção Sigma/SIEM, IOCs, scanner de versão não intrusivo. Sem PoC armado. | Kitploit
Ferramentas/GitHubGitHub/iqx6889/cve-2026-52813-gogs-rce
Gerenciamento de Indicadores de Comprometimento (IOC)Scanners de VulnerabilidadesAnálise de VulnerabilidadesInteligência de AmeaçasPapers e PesquisaAprendizado e EducaçãoResposta a IncidentesAnálise de LogsLabs e Prática

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 →
GitHubiqx6889/cve-2026-52813-gogs-rce

CVE-2026-52813-Gogs-RCE

CVE-2026-52813 (Gogs Path Traversal → Git Hooks RCE) writeup defensivo: análise de causa raiz e de patch, regras de detecção Sigma/SIEM, IOCs, scanner de versão não intrusivo. Sem PoC armado.

Ver Repositório
18há 1 mêsAinda não revisado
Compartilhar

CVE-2026-52813 — Path traversal no Gogs leva à execução remota de código via Git Hooks (análise defensiva)

Pesquisa de segurança / writeup voltado para blue team. Este repositório não contém PoC weaponizado. Pesquisadores que precisarem reproduzir devem usar o PoC público referenciado no advisory oficial.

ItemDescrição
CVECVE-2026-52813
AliasesGHSA-c39w-43gm-34h5 / GO-2026-5305
Versões afetadasGogs < 0.14.3
Versão corrigida0.14.3 — PR #8334
CVSS 3.110.0 Critical AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWECWE-23 Relative Path Traversal → RCE
Pré-requisitoUma conta registrada comum (com registro aberto por padrão = RCE não autenticado)

TL;DR

Ao criar uma organização no Gogs, o formulário Web tem a validação de caracteres AlphaDashDot que bloqueia /, mas a API REST POST /api/v1/user/orgs não tem. O atacante envia um nome de organização contendo ../ via API, contorna a validação e chega direto a os.MkdirAll(repoutil.UserPath(org.Name), 0777) (internal/database/org.go:165), gravando o diretório do repositório em caminhos arbitrários do sistema de arquivos. Combinado com a árvore de trabalho temporária do editor Web do Gogs (local-r/<repo_id>/), é possível depositar um hooks/update malicioso dentro do checkout local de outro repositório, executado automaticamente pelo git → RCE como usuário git.


Versões afetadas e remediação

Versão do GogsStatus
< 0.14.3Afetado, atualize imediatamente
>= 0.14.3Corrigido

A atualização é a única correção definitiva:

root@kitploit:~
# Docker
docker pull gogs/gogs:0.14.3
# 或源码
git checkout v0.14.3 && go build

Mitigações temporárias (quando não for possível atualizar):

  • Desative o registro aberto (app.ini → [service] DISABLE_REGISTRATION = true), reduzindo o pré-requisito de "não autenticado" para "exige conta existente";
  • Na camada de proxy reverso (nginx/Caddy/Traefik), adicione regras de WAF para bloquear corpos de requisição de POST /api/v1/user/orgs e POST /api/v1/org/*/repos em que os campos username / name contenham .. ou / (veja detection/);
  • Restrinja as permissões de escrita do contêiner do Gogs fora de /data/gogs/data/tmp/ (selinux/apparmor).

Análise da causa raiz

1. Assimetria de validação: a Web tem, a API não tem

Formulário Web (internal/form/org.go, v0.14.2):

root@kitploit:~
type CreateOrg struct {
    OrgName string `binding:"Required;AlphaDashDot;MaxSize(35)"` // 正则 ^[a-zA-Z0-9._-]+$
}

API (internal/route/api/v1/org/org.go, v0.14.2):

root@kitploit:~
// api.CreateOrgOption (go-gogs-client) 的绑定 tag:
type CreateOrgOption struct {
    UserName string `json:"username" binding:"Required"` // ← 没有 AlphaDashDot!
}

→ O campo username de POST /api/v1/user/orgs pode carregar caracteres arbitrários direto até a camada de banco de dados.

2. A camada de banco de dados só verifica nomes reservados, não o conjunto de caracteres

internal/database/users.go:1532 isNameAllowed apenas bloqueia nomes reservados/prefixos e sufixos (como admin, -bot) e não valida o conjunto de caracteres, então ../ passa.

3. Sink de caminho sem sanitização

internal/repoutil/repoutil.go (v0.14.2):

root@kitploit:~
func UserPath(user string) string {
    return filepath.Join(conf.Repository.Root, strings.ToLower(user)) // ← 直接拼接
}

internal/database/org.go:165:

root@kitploit:~
os.MkdirAll(repoutil.UserPath(org.Name), os.ModePerm) // org.Name 含 ../ → 任意路径写入

4. Usando a árvore de trabalho local-r para plantar o hook

Ao processar edições de arquivos Web/API, o Gogs faz checkout do repositório em /data/gogs/data/tmp/local-r/<repo_id>/. O <repo_id> é exatamente o id do repositório no banco de dados. O atacante:

  1. Cria um repositório pessoal writer, obtendo id == n;
  2. Cria via API uma organização com path traversal username = "../../../../data/gogs/data/tmp/local-r/n/nested" → o diretório físico cai dentro da árvore de trabalho de writer;
  3. Cria um repositório rce-x sob essa organização → cai em local-r/n/nested/rce-x.git;
  4. Faz clone de writer, faz commit e push de nested/rce-x.git/hooks/update como arquivo comum (ele fica dentro da árvore de trabalho de writer);
  5. Aciona via API uma operação de arquivo em writer → o Gogs executa git em local-r/n/ → o git executa hooks/update → RCE.

Ponto-chave: o hook malicioso entra como conteúdo comum de repositório via push normal e não exige a configuração ENABLE_GIT_HOOKS — é isso que o diferencia da rota de "abuso tradicional de git hooks".

Análise detalhada do diff do patch em patch/ANALYSIS.md.


Detecção

Regras completas em detection/:

  • Regras Sigma: detection/sigma/ — cobrem tentativas de ataque (requisições de API contendo ../) e exploração bem-sucedida (materialização no sistema de arquivos)
  • Consultas SIEM: detection/queries.md — Splunk / Elastic / Kibana / Loki
  • IOCs: detection/iocs.md — rastros no sistema de arquivos, assinaturas de log, características de nomes de usuário

As duas mais críticas:

  1. Bloqueio na camada WAF / proxy reverso: campos username/name contendo .. ou / no corpo JSON de POST /api/v1/user/orgs e POST /api/v1/org/*/repos.
  2. Inspeção do sistema de arquivos: aparecimento de subdiretórios inesperados sob /data/gogs/data/tmp/local-r/*/ (nested/, rce-*.git, hooks/update).

Ferramentas defensivas

  • tools/check_version.py — scanner de versão não intrusivo: verifica por meio de GET /api/v1/version se uma instância do Gogs é < 0.14.3, com suporte a varredura em lote e saída CSV, adequado para inventário de ativos.

Este repositório não fornece ferramentas de exploração weaponizadas. Para reproduzir, use o PoC público referenciado no advisory oficial e somente em ambiente isolado auto-hospedado.


Ambiente de laboratório

As regras de detection/ precisam ser validadas em um Gogs afetado; lab/docker-compose.yml fornece um ambiente isolado do Gogs 0.14.2 para o blue team testar se as regras de detecção são acionadas. Não exponha à internet pública, use apenas localmente.


Linha do tempo

DataEvento
2026-06-08CVE reservado
2026-06-24Divulgação pública, lançamento do Gogs 0.14.3
2026-06-24Publicação do advisory oficial GHSA-c39w-43gm-34h5

Referências

  • Advisory oficial: https://github.com/gogs/gogs/security/advisories/GHSA-c39w-43gm-34h5
  • PR de correção: https://github.com/gogs/gogs/pull/8334
  • OSV: https://osv.dev/vulnerability/CVE-2026-52813
  • Release do Gogs 0.14.3: https://github.com/gogs/gogs/releases/tag/v0.14.3

⚠️ Sobre a desinformação da "injeção de parâmetro gitrebase"

Na internet, há quem descreva este CVE como "Execução remota de código por injeção de parâmetro gitrebase no Gogs" — isso está errado. Esta vulnerabilidade não tem relação com git rebase / gitrebase; a causa raiz é o path traversal na API. Este documento segue a análise da vulnerabilidade real.


Licença

MIT — veja LICENSE.

Baixar ferramenta