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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
gitea-restore-file-open — Proof-of-Concept für eine Gitea-Restore-Repo-file://-Local-File-Inclusion (CWE-73), die Symlink-Ziele außerhalb eines nicht vertrauenswürdigen Dumps in Release-Anhänge kopiert. | Kitploit
Tools/GitHubGitHub/abraxas/gitea-restore-file-open
SchwachstellenanalyseExploitationInformationsbeschaffungSicherheitsvirtualisierungWebsicherheitPenetrationstestsLabs & Praxis
GitHub
abraxas/gitea-restore-file-open

gitea-restore-file-open

Proof-of-Concept für eine Gitea-Restore-Repo-file://-Local-File-Inclusion (CWE-73), die Symlink-Ziele außerhalb eines nicht vertrauenswürdigen Dumps in Release-Anhänge kopiert.

Repository anzeigen
2vor 13 TagenNoch 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

Abraxas Labs - gitea-restore-file-open

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-restore-file-open

gitea-restore-file-open

Gitea 1.27.3 - Gitea

CVE-2026-59765 setzte einen hostmatcher-HTTP-Client auf OpenWithClient. Der file://-Zweig ignoriert diesen Client und ruft os.Open auf. Die Wiederherstellung eines Dumps hat kein DownloadFunc. gitea_uploader.go öffnet dann die umgeschriebene file://-URL. os.Open folgt einem dump-seitigen Symlink. Der Join bleibt unter dem Dump. Der Symlink nicht.

Die Wiederherstellung eines nicht vertrauenswürdigen Dumps durch einen Operator kopiert das Symlink-Ziel in einen Release-Anhang. Als Gitea-uid ist das jede Datei, die das Dienstkonto lesen kann.

IDnoch keine CVE
CWECWE-73
CVSSMedium: 4.2 CVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:U/C:H/I:N/A:N
ProduktGitea
Betroffenbis v1.27.3 (146cc3e); lokaler Operator gitea restore-repo
Authlokale Operator-Wiederherstellung eines nicht vertrauenswürdigen Dumps
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Einem Admin einen nicht vertrauenswürdigen Dump aushändigen (ein „Backup"-Verzeichnis, eine Wiederherstellung von einem nicht vertrauenswürdigen Remote), der einen Symlink unter dem joined-under-dump-Pfad enthält. Die Wiederherstellung kopiert die Zieldatei in einen Release-Anhang des wiederhergestellten Repos. Wer dieses Repo lesen kann, lädt sie herunter.

Wenn der Dump-Autor app.ini benennt, ist das Credential-Diebstahl (INTERNAL_TOKEN, SECRET_KEY, JWT, DB-Passwort). Das Lab-Orakel war eine platzierte Witness-Datei, nicht app.ini. Es ist kein OS-LPE. Es ist nicht unauthentifiziert. Es ist kein Dump-Root-Join-Escape. Live-Migration von GitHub/GitLab/Gitea setzt DownloadFunc und ruft nicht os.Open auf einer Angreifer-file:// auf.

Wie ich es gefunden habe

Zwei Restore-Maps lagen auf dem übrig gebliebenen Tisch. Ich habe die offensichtliche zuerst im Lab getestet.

Finding 8 war Dump-Root-Join-Escape: eine absolute DownloadURL in release.yml platzieren und hoffen, dass FilePathJoinAbs das Dump-Präfix so fallen lässt, wie es ein naives filepath.Join(base, "/etc/passwd") tut. Auf 1.27.3 tut es das nicht. Jedes sub ist filepath.Clean("/"+s) und dann filepath.Join(base, cleaned). Der Replica-Join von /tmp/dump + /tmp/GITEA-JOIN-OUTSIDE blieb /tmp/dump/tmp/GITEA-JOIN-OUTSIDE. Die Wiederherstellung schrieb file:// unter dem Dump um und schlug fehl mit open ...: no such file or directory. Das ist kein Join-Escape auf diesem Tag.

Finding 9 ist das, was gelandet ist. Ich platzierte eine Witness-Datei außerhalb des Dumps, legte einen Symlink am joined-under-dump-Pfad an, führte gitea restore-repo aus. Restore rc=0. Der wiederhergestellte Release-Anhang enthielt GITEA-FILE-OPEN-WITNESS.

Bereits dokumentierte Irrwege: Dump-Root-Join-Escape über eine absolute DownloadURL; Live-Migrate-file://-LFI; X-Gitea-Internal-Auth (Restore ist CLI als Gitea-uid, nicht /api/internal); Restore-HTTP als Remote-Unauth behandeln (CVSS ist lokal, hohe Privilegien, Benutzerinteraktion); eine Reverse Shell. Theater.

Lab

cd lab
./run.sh

Ziel nur http://127.0.0.1:18137. Compose mountet lab/dump read-only. run.sh platziert den Witness im Container, baut den Dump, legt den Symlink an und führt dann gitea restore-repo aus.

restore-rc=0 Restore repo labadmin/restored successfully
download status=200 snippet=GITEA-FILE-OPEN-WITNESS
SUCCESS GITEA-RESTORE-FILE-OPEN

Der Fix

file:// aus OpenWithClient entfernen oder das Folgen von Dump-Symlinks verweigern und keine nicht vertrauenswürdigen Dumps wiederherstellen. Der wiederhergestellte Anhang darf den Out-of-Dump-Witness nicht enthalten.

Referenzen

  • github.com/go-gitea/gitea Tag v1.27.3
  • uri.go · gitea_uploader.go · FilePathJoinAbs
  • In der Nähe gepatcht: CVE-2026-59765
  • CWE-73

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen