Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этом райтапе я покажу, как получить удаленное выполнение кода на сервере через уязвимость функции iconv в библиотеке GNU C Library (glibc). На пути к этой уязвимости проэксплуатируем LFI в плагине BuddyForms для WordPress и проанализируем код мобильного приложения.
Наша конечная цель — получение прав суперпользователя на машине BigBang с учебной площадки Hack The Box. Уровень задания — сложный.
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
10.10.11.52 bigbang.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A
).
Результат работы скрипта
Сканер нашел два открытых порта:
Как обычно в таких случаях, начинаем с изучения сайта на веб‑сервере. Отметим, что в отчете сканирования показан редирект на адрес http://blog.bigbang.htb
. Добавляем и этот домен в /etc/hosts
.
10.10.11.52 bigbang.htb blog.bigbang.htb
Главная страница сайта
Внизу страницы находим пометку, что сайт построен на WordPress.
Главная страница сайта
При тестировании сайтов под управлением WordPress лучше всего использовать утилиту WPScan. С ее помощью можно обнаружить уязвимые версии самого WordPress, тем и плагинов, а также собрать список имеющихся пользователей и перебрать учетные данные (в общем, все, что нужно). Перед началом сканирования советую зарегистрироваться на сайте WPScan и получить API-токен (это бесплатно).
Чаще всего уязвимости присутствуют в плагинах, поэтому я зарядил их перебор (опция -e vp
) в агрессивном режиме (опция --plugins-detection aggressive
), используя 128 потоков (опция -t
).
wpscan --url http://backdoor.htb/ -e ap --plugins-detection aggressive -t 100 wpscan --api-token K.....w --url http://blog.bigbang.htb/ -e vp -t 128
Обнаруженные плагины
Потратив несколько минут, мы получаем отчет, в котором отмечены уязвимости в плагине BuddyForms. Подробную информацию об уязвимости можно посмотреть на сайте WPScan.
Информация об уязвимости
Там же получим и идентификатор CVE-2023-26326. Из описания уязвимости следует, что плагин BuddyForms версии до 2.7.8 уязвим к PHAR-десериализации. Неавторизованный пользователь может заюзать эту уязвимость для получения содержимого произвольных файлов.
Первым делом стоит проверить, есть ли для этой CVE готовые эксплоиты или связанные с ней ресерчи. Для начала просто ищем в Google.
Поиск эксплоитов в Google
Подробный разбор уязвимости нашелся в блоге Tenable TechBlog. Судя по этому репорту, мы должны передать сериализованные данные в параметре url
на странице /wp-admin/admin-ajax.php
. Сериализовать данные можно с помощью php_filter_chain_generator. Однако в итоговом файле должна быть сигнатура изображения, иначе мы получим ошибку.
Ответ сервера
Добавить сигнатуру GIF89a
в итоговый файл можно следующим образом.
python3 php_filter_chain_generator.py --chain GIF89a
Подготовка данных
В конце последовательности заменим php://temp
файлом, который мы хотим получить. В качестве теста будем получать содержимое файла /etc/passwd
.
Отправляем итоговую последовательность и получаем в ответе путь к якобы загруженному изображению.
Эксплуатация уязвимости
Проверим файл, ссылку на который нам вернул сервер, и подтвердим наличие уязвимости.
Содержимое файла
Так как уязвимость присутствует, попробуем раскрутить ее до RCE, в этом нам поможет пост в блоге Lexfo. Мы можем попробовать проэксплуатировать уязвимость CVE-2024-2961 в функции iconv библиотеки glibc. Этот баг приводит к переполнению буфера.
Страница из блога
Источник: xakep.ru