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-2026-60004-PoC — Gitea avant 1.27.1 permet l'exécution de code à distance via l'API diffpatch par l'installation de hooks Git. | Kitploit
Outils/GitHubGitHub/erberkan/cve-2026-60004-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebPost-ExploitationVirtualisation de SécuritéTests d'IntrusionRed TeamingOutil d'Accès à Distance
GitHuberberkan/cve-2026-60004-poc

CVE-2026-60004-PoC

Gitea avant 1.27.1 permet l'exécution de code à distance via l'API diffpatch par l'installation de hooks Git.

Voir le dépôt
il y a 1 jourPas encore vérifié
Site web

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-2026-60004 : Exécution de code à distance via l'API Diffpatch de Gitea

[!WARNING] Ce dépôt est destiné exclusivement à la recherche en sécurité autorisée et aux tests contrôlés en laboratoire. N'exécutez pas la preuve de concept contre des systèmes que vous ne possédez pas ou pour lesquels vous ne disposez pas d'une autorisation explicite d'évaluation.

Aperçu

CVE-2026-60004 est une vulnérabilité critique d'exécution de code à distance dans l'API diffpatch de Gitea. Un utilisateur authentifié disposant de la permission de créer ou d'écrire dans un dépôt peut soumettre un patch conçu pour provoquer la matérialisation d'un hook Git exécutable à l'intérieur d'un dépôt nu temporaire. Lorsque le hook est déclenché, les commandes contrôlées par l'attaquant s'exécutent avec les privilèges du compte de service Gitea.

Si l'inscription publique est activée, un attaquant non authentifié peut être en mesure de créer un compte et d'atteindre le point de terminaison authentifié vulnérable.

AttributDétails
IdentifiantCVE-2026-60004
AvisGHSA-rcr6-4jqh-j84m
SévéritéCritique — CVSS 3.1 : 9.8
FaiblesseCWE-94 : Contrôle inapproprié de la génération de code
Versions affectéesGitea 1.17.0 à 1.27.0
Version corrigéeGitea 1.27.1
Accès requisAccès en écriture au dépôt
Contexte d'exécutionCompte système d'exploitation Gitea
Date CISA KEV2026-08-25

Contenu du dépôt

FichierDescription
gitea_diffpatch_rce.pyPreuve de concept utilisant uniquement la bibliothèque standard qui s'authentifie, crée un dépôt privé, soumet le patch conçu et récupère la sortie de commande.
payload.patchExemple de patch qui crée un hook exécutable hooks/post-index-change.
poc.pngCapture d'écran réalisée lors de la validation en laboratoire.
README.mdNotes de recherche originales.

Environnement testé

La preuve de concept a été validée dans l'environnement isolé suivant :

ComposantConfiguration
Gitea1.27.0
Git2.47.2
DéploiementConteneur Docker nommé gitea-lab
Adresse du service192.168.184.128:3000
Identité observéeuid=1000(git) gid=1000(git)

Une exploitation réussie a produit une sortie de commande similaire à :

root@kitploit:~
uid=1000(git) gid=1000(git) groups=1000(git)
Linux 6.12.20-amd64 x86_64
/data/gitea/tmp/local-repo/upload.git630501597
[exit-status=0]

Sortie de la preuve de concept

Prérequis

  • Python 3.8 ou version ultérieure
  • Accès réseau à l'instance Gitea cible
  • Un compte Gitea valide avec les permissions de création et d'écriture de dépôt, ou une instance de laboratoire cible avec l'inscription publique activée
  • Un environnement de test explicitement autorisé

Le script utilise uniquement la bibliothèque standard de Python et ne nécessite aucun paquet supplémentaire.

Utilisation

root@kitploit:~
python3 gitea_diffpatch_rce.py <base_url> <username> <password> "<command>"

Exemple pour une instance de laboratoire locale :

root@kitploit:~
python3 gitea_diffpatch_rce.py \
  http://127.0.0.1:3000 \
  pocuser \
  'P@ssw0rd!' \
  'id; uname -a'

Le script tente d'abord une inscription web, puis s'authentifie avec les identifiants fournis. Cela permet à la même commande de fonctionner soit avec un nouveau compte sur une instance avec inscription ouverte, soit avec un compte existant.

Analyse technique

La chaîne d'exploitation se compose de quatre étapes :

  1. Soumission d'un patch contrôlé par l'attaquant
    POST /api/v1/repos/{owner}/{repo}/diffpatch applique le contenu du patch fourni à l'aide de git apply --index --recount --cached --binary --ignore-whitespace --whitespace=fix -3 dans un clone temporaire.

  2. Placement du chemin du hook
    Le dépôt temporaire est créé en tant que clone nu et partagé. Dans un dépôt nu, la racine du dépôt est également $GIT_DIR ; par conséquent, le chemin du patch hooks/post-index-change se résout à l'intérieur du répertoire de hooks actif de Git.

  3. Matérialisation du hook exécutable
    Le même patch est soumis deux fois. La seconde application produit un conflit add/add, provoquant la matérialisation du chemin sur le disque par le repli three-way avec le mode 100755, malgré l'utilisation de --cached. Une mise à jour ultérieure de l'index invoque post-index-change, exécutant le code shell injecté en tant que compte de service Gitea.

  4. Récupération de la sortie native à Git
    Le hook identifie le dépôt d'origine via objects/info/alternates, stocke la sortie de commande en tant que blob Git, crée une arborescence et un commit, et met à jour refs/heads/output-leak. La preuve de concept récupère ensuite le résultat via l'API de fichiers bruts de Gitea. Cette technique ne nécessite pas de connexion sortante directe depuis la cible.

Impact

Une exploitation réussie accorde l'exécution de commandes avec les privilèges du compte de service Gitea. Selon la configuration du déploiement, un attaquant peut être en mesure d'accéder à :

  • app.ini et aux identifiants de base de données
  • SECRET_KEY, INTERNAL_TOKEN et aux secrets liés à LFS
  • Aux dépôts montés ou lisibles par le processus Gitea
  • Aux variables d'environnement du processus
  • Aux services internes accessibles depuis l'hôte ou le conteneur Gitea

Il a été confirmé que le compte de laboratoire disposait d'un accès en lecture à app.ini.

Indicateurs de compromission

Les défenseurs doivent examiner les artefacts et les schémas de requêtes suivants :

  • Deux requêtes identiques ou quasi identiques vers /api/v1/repos/*/*/diffpatch en succession rapide
  • Une branche nommée output-leak
  • Des commits dont l'auteur est poc <[email protected]>
  • Des fichiers exécutables inattendus nommés hooks/post-index-change dans des dépôts nus ou des répertoires de clone temporaires
  • Une activité suspecte sous des chemins tels que /data/gitea/tmp/local-repo/upload.git*

Ces indicateurs décrivent la preuve de concept incluse et ne sont pas exhaustifs ; un exploit modifié peut utiliser des chemins, des refs, des identités ou des canaux de sortie différents.

Remédiation et atténuation

  1. Mettre à niveau vers Gitea 1.27.1 ou version ultérieure. Il s'agit de la remédiation recommandée. Le correctif modifie le flux de travail affecté pour utiliser un clone temporaire non nu.
  2. Restreindre l'API diffpatch au niveau du reverse proxy jusqu'à ce que la mise à niveau soit terminée, par exemple en refusant l'accès aux routes /api/v1/.../diffpatch correspondantes. Validez la règle par rapport aux intégrations légitimes avant le déploiement.
  3. Désactiver l'inscription publique en définissant DISABLE_REGISTRATION=true si elle n'est pas opérationnellement requise. Cela réduit l'accessibilité non authentifiée mais ne protège pas contre les utilisateurs existants disposant d'un accès en écriture au dépôt.
  4. Examiner les journaux et les refs des dépôts pour les indicateurs ci-dessus, et faire tourner les identifiants ou secrets accessibles au compte Gitea si une compromission est suspectée.

Pour le conteneur de laboratoire utilisé dans cette recherche, le démontage peut être effectué avec :

root@kitploit:~
docker rm -f gitea-lab

Utilisation responsable

Ce matériel est fourni pour aider les défenseurs à reproduire, comprendre, détecter et remédier à la vulnérabilité. Les opérateurs ne doivent tester que dans des environnements isolés et respecter les exigences d'autorisation et de divulgation de leur organisation.

Télécharger l’outil