Содержание статьи
Наша конечная цель — получение прав суперпользователя на машине BigBang с учебной площадки Hack The Box. Уровень задания — сложный.
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /:
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).

Сканер нашел два открытых порта:
- 22 — служба OpenSSH 8.9p1;
- 80 — веб‑сервер Apache 2.4.62.
Как обычно в таких случаях, начинаем с изучения сайта на веб‑сервере. Отметим, что в отчете сканирования показан редирект на адрес http://. Добавляем и этот домен в /.
10.10.11.52 bigbang.htb blog.bigbang.htb

Точка входа
Внизу страницы находим пометку, что сайт построен на WordPress.

При тестировании сайтов под управлением WordPress лучше всего использовать утилиту WPScan. С ее помощью можно обнаружить уязвимые версии самого WordPress, тем и плагинов, а также собрать список имеющихся пользователей и перебрать учетные данные (в общем, все, что нужно). Перед началом сканирования советую зарегистрироваться на сайте WPScan и получить API-токен (это бесплатно).
Чаще всего уязвимости присутствуют в плагинах, поэтому я зарядил их перебор (опция -e ) в агрессивном режиме (опция --plugins-detection ), используя 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.

Подробный разбор уязвимости нашелся в блоге Tenable TechBlog. Судя по этому репорту, мы должны передать сериализованные данные в параметре url на странице /. Сериализовать данные можно с помощью php_filter_chain_generator. Однако в итоговом файле должна быть сигнатура изображения, иначе мы получим ошибку.

Добавить сигнатуру GIF89a в итоговый файл можно следующим образом.
python3 php_filter_chain_generator.py --chain GIF89a

В конце последовательности заменим php:// файлом, который мы хотим получить. В качестве теста будем получать содержимое файла /.
Отправляем итоговую последовательность и получаем в ответе путь к якобы загруженному изображению.

Проверим файл, ссылку на который нам вернул сервер, и подтвердим наличие уязвимости.

Точка опоры
Так как уязвимость присутствует, попробуем раскрутить ее до RCE, в этом нам поможет пост в блоге Lexfo. Мы можем попробовать проэксплуатировать уязвимость CVE-2024-2961 в функции iconv библиотеки glibc. Этот баг приводит к переполнению буфера.

Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
