Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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
Gitea-template-sync-Path-Traversal-Privilege-Escalation-CVE-2026-38526- — PoC und Write-up für die HackTheBox-"Nexus"-Rechteausweitung: ein als root laufender Gitea-Template-Sync-Dienst, der über gefälschte Git-Objekte für Path Traversal anfällig ist. Nur für Bildungszwecke. | Kitploit
Tools/GitHubGitHub/shirouuu/gitea-template-sync-path-traversal-privilege-escalation-cve-2026-38526-
Privilege EscalationSchwachstellenanalyseExploitationWebanwendungs-ExploitationPost-ExploitationCTFPenetrationstestsLernen & BildungPayload-Entwicklung

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Labs & Praxis
GitHubshirouuu/gitea-template-sync-path-traversal-privilege-escalation-cve-2026-38526-

Gitea-template-sync-Path-Traversal-Privilege-Escalation-CVE-2026-38526-

PoC und Write-up für die HackTheBox-"Nexus"-Rechteausweitung: ein als root laufender Gitea-Template-Sync-Dienst, der über gefälschte Git-Objekte für Path Traversal anfällig ist. Nur für Bildungszwecke.

Repository anzeigen
vor 6h 45mNoch nicht geprüft

Nexus — Lokale Privilegienausweitung PoC

Gitea Template-Sync Path Traversal über gefälschte Git-Objekte → root

Ein Proof-of-Concept-Exploit zur Privilegienausweitung für die HackTheBox-Maschine Nexus. Ein root-eigener systemd-Dienst synchronisiert Gitea-Template-Repositories auf die Festplatte, ohne Eintragsnamen zu bereinigen, wodurch ein authentifizierter Benutzer mit geringen Rechten beliebige Dateien als root durch Directory Traversal schreiben kann — hier genutzt, um einen SSH-Schlüssel in /root/.ssh/authorized_keys einzuschleusen.


⚠️ Haftungsausschluss

Dieser Code wird für Bildungszwecke und autorisierte Sicherheitstests bereitgestellt — d. h. für Laborumgebungen wie HackTheBox oder Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Die unbefugte Nutzung gegen Systeme, die Sie nicht kontrollieren, ist illegal. Der Autor übernimmt keine Haftung für Missbrauch.

Wenn die Nexus-Maschine noch aktiv auf HackTheBox ist, veröffentlichen oder teilen Sie diesen Exploit nicht — die HTB-Regeln verbieten die Verbreitung von Lösungen für aktive Maschinen.


Zusammenfassung der Schwachstelle

Das Synchronisierungsskript liest Dateien aus Repositories, die in Gitea als Templates markiert sind, und schreibt sie auf das lokale Dateisystem. Der Zielpfad wird ungefähr so aufgebaut:

root@kitploit:~
dest = os.path.join(base_dir, name)   # name comes straight from the Git tree
open(dest, "w").write(content)

os.path.join() neutralisiert ..-Sequenzen nicht. Ein Tree-Eintrag, dessen Name ein Traversal-Pfad ist (z. B. ../../../../../root/.ssh/authorized_keys), bewirkt daher, dass der privilegierte Prozess außerhalb des vorgesehenen Verzeichnisses schreibt.


Warum gefälschte Git-Objekte?

Git speichert Inhalt und Namen getrennt:

  • ein Blob enthält den Rohinhalt einer Datei (keinen Namen);
  • ein Tree ordnet name → object zu (hier lebt der Dateiname);
  • ein Commit zeigt auf einen Top-Level-Tree.

Der Dateiname in einem Tree-Eintrag ist nur Text, kann also .. sein — aber der Standard- Git-Client weigert sich, einen solchen Eintrag zu erstellen, genau um diesen Angriff zu verhindern.

Dieser PoC umgeht diese clientseitige Prüfung, indem er rohe Git-Objekte direkt in .git/objects/ schreibt (die SHA-1-IDs werden manuell berechnet) und refs/heads/main manuell erstellt. Das gepushte Repository enthält dann einen Tree-Eintrag namens .., den der root-Synchronisierungsprozess auflöst und befolgt.


Angriffskette (vollständiger Box-Kontext)

  1. Fußfassung — Krayin CRM uneingeschränkter Datei-Upload (CVE-2026-38526) → RCE als www-data.
  2. Laterale Bewegung — Klartext-Anmeldedaten in der Produktions-.env, wiederverwendet als Systempasswort → SSH als Benutzer mit geringen Rechten.
  3. Privilegienausweitung — dieser PoC → root.

Das wiederkehrende Thema in allen drei Phasen: ein privilegierter Prozess, der angreiferkontrollierten Daten ohne Validierung vertraut (ein gefälschter MIME-Typ, ein wiederverwendetes Passwort, ein unbereinigter Dateiname).


Voraussetzungen

  • Ausführung auf dem Zielhost, als der authentifizierte Benutzer mit geringen Rechten.
  • Gitea erreichbar unter http://localhost:3000.
  • git, python3, curl und ssh verfügbar (Standard auf der Box).

Verwendung

root@kitploit:~
chmod +x nexus_privesc.sh
./nexus_privesc.sh -t <TARGET_IP> -u <GITEA_USER> -p <GITEA_PASS> [-d DEPTH]

Beispiel:

root@kitploit:~
./nexus_privesc.sh -t 10.129.21.192 -u jones -p 'REDACTED' -d 5

Was das Skript tut

  1. Erzeugt ein ed25519-SSH-Schlüsselpaar (/tmp/.exploit_key).
  2. Fordert ein Gitea-API-Token über Basic Auth an.
  3. Erstellt ein Repository und markiert es als Template.
  4. Fälscht rohe Git-Objekte, die einen ..-Traversal-Tree kodieren, der auf /root/.ssh/authorized_keys abbildet, mit dem öffentlichen Schlüssel des Angreifers als Inhalt.
  5. Pusht das vergiftete Repository.
  6. Wartet auf den root-eigenen Synchronisierungs-Timer (~60s).
  7. Meldet sich als root mit dem eingeschleusten Schlüssel an.

Überwachen Sie die Synchronisierung auf dem Ziel mit:

root@kitploit:~
tail -f /var/log/template-sync.log

Ein erfolgreicher Durchlauf protokolliert eine Zeile wie:

root@kitploit:~
synced: ../../../../../root/.ssh/authorized_keys

Anpassen von DEPTH

DEPTH ist die Anzahl der ..-Ebenen, die benötigt werden, um vom Synchronisierungs-/Staging- Verzeichnis bis zum Dateisystem-Root (/) aufzusteigen. Wenn die Synchronisierung im Log erfolgreich ist, aber das root-SSH fehlschlägt, ist das Traversal auf der falschen Ebene gelandet — versuchen Sie es erneut mit -d 4 oder -d 6. Der genaue Wert kann durch Lesen des Staging-Pfads in /etc/gitea/template-sync.py bestätigt werden.


Behebung

  • Erstellen Sie niemals Dateisystempfade aus nicht vertrauenswürdigen Namen mit os.path.join() allein. Normalisieren und begrenzen Sie Pfade, z. B.:

    root@kitploit:~
    base = os.path.realpath(base_dir)
    dest = os.path.realpath(os.path.join(base, name))
    if not dest.startswith(base + os.sep):
        raise ValueError("path traversal blocked")
    
  • Lehnen Sie Tree-Eintragsnamen ab, die .., absolute Pfade oder Pfadtrenner enthalten.

  • Führen Sie den Synchronisierungsdienst unter einem dedizierten Konto mit geringen Rechten aus, nicht als root.

  • Aktivieren Sie receive.fsckObjects = true in Gitea, um fehlerhafte gepushte Objekte abzulehnen.


Referenzen

  • CWE-22 — Improper Limitation of a Pathname to a Restricted Directory (Path Traversal)
  • CVE-2026-38526 — Krayin CRM uneingeschränkter Datei-Upload (Fußfassungsphase)
  • Git-Interna — Objekte (Blob / Tree / Commit): https://git-scm.com/book/en/v2/Git-Internals-Git-Objects
  • MITRE ATT&CK — T1068 Exploitation for Privilege Escalation

Autor

<your name / handle> — für Bildungszwecke auf HackTheBox.

Tool herunterladen
KlassePath Traversal (CWE-22) → Lokale Privilegienausweitung
Komponentegitea-template-sync.service (benutzerdefiniertes /etc/gitea/template-sync.py)
Läuft alsroot, ausgelöst alle ~60s durch gitea-template-sync.timer
Grundursacheos.path.join() auf unbereinigten Namen aus Git-Tree-Objekten
AuswirkungAuthentifizierter Benutzer mit geringen Rechten → root
FlagBeschreibungStandard
-tZiel-IP (für das abschließende root-SSH)— (erforderlich)
-uGitea-Benutzername— (erforderlich)
-pGitea-Passwort— (erforderlich)
-dAnzahl der ..-Ebenen, um von dem Synchronisierungsverzeichnis nach / zu gelangen5