В этой небольшой статье, в рамках прохождения уязвимой виртуальной машины Pilgrimage с площадки Hack The Box, я продемонстрирую эксплуатацию уязвимости ImageMagick с идентификатором CVE-2022-44268.
Еще по теме: Эксплуатация уязвимости в модуле PHP Imagick
ImageMagick — это инструмент для обработки изображений. С его помощью можно выполнять различные операции, такие как изменение размера, обрезка, поворот, наложение фильтров и многое другое. Этот инструмент часто используется в веб-разработке, графическом дизайне и других областях, где требуется работа с изображениями.
Эксплуатация уязвимости CVE-2022-44268 ImageMagick
Версия ImageMagick 7.1.0-49 имеет уязвимость CVE-2022-44268 — чтение произвольного файла. Это дает возможность получать содержимое определенных файлов с удаленной системы. Причина уязвимости заключается в том, что при изменении размера изображения ImageMagick будет включать содержимое профиля в создаваемое изображение, при этом мы можем манипулировать значением этого профиля.
Можем, например, к картинке добавить чанк текстового типа (например, tEXt), содержащий ключ и строку‑значение. Если ключ — строка profile, то ImageMagick интерпретирует значение как имя файла в системе и загружает его содержимое как необработанный профиль, после чего из нового изображения можно прочитать этот профиль в HEX-формате.
Для автоматического изменения PNG используем эксплоит из репозитория voidz0r.
Для пробы прочитаем файл /etc/passwd.
1 |
cargo run "/etc/passwd" |
Теперь загружаем в веб‑сервис созданное изображение‑нагрузку, после чего получаем ссылку на новое изображение, с измененным размером.
Скачиваем полученный файл и находим в нем чанк с профилем.
1 2 |
wget http://pilgrimage.htb/shrunk/64a7e8f368191.png identify -verbose 64a7e8f368191.png |
Используем CyberChef для декодирования шестнадцатеричного значения и получаем содержимое файла /etc/passwd, раскрывающее нам список пользователей.
Уязвимость подтвердили, а значит, можем скачать и другие интересные файлы. Например, файл базы данных SQLite /var/db/pilgrimage, о котором мы узнали из исходного кода. Здесь наверняка найдутся учетные данные пользователей сайта.
Это «сырые» данные, в которых можно заблудиться, поэтому активируем еще одну функцию CyberChef, чтобы отобразить только строки.
Таким образом получаем учетные данных трех пользователей. Нас интересует emily, поскольку такой пользователь есть и в системе тоже. Пробуем подключиться к SSH с этим же паролем и забираем флаг пользователя.
ПОЛЕЗНЫЕ ССЫЛКИ: