Содержание статьи
Наша цель — захват рута на тренировочной машине Precious с площадки Hack The Box. Уровень сложности — легкий.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
10.10.11.189 precious.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(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.
Про SSH, как всегда на машинах с HTB, можно забыть, пока у нас нет учетных данных. Сразу откроем браузер для изучения веб‑сайта.
Справка: брутфорс учеток
Поскольку в начале прохождения у нас нет учетных данных, нет и смысла изучать службы, которые всегда требуют авторизации (например, SSH). Единственное, что мы можем делать здесь, — это перебирать пароли брутфорсом, но у машин с HTB почти всегда есть другое прохождение. В жизни таких вариантов может не быть, к тому же есть шансы подобрать пароль или получить его при помощи социальной инженерии.

Нас встречает форма конвертера веб‑страницы в файл PDF. А это потенциальная точка входа.
Точка входа
Первым же делом я попробовал прочитать локальный файл /
, запросив URL file:///
. На этот запрос сервер вернул ошибку «You should provide a valid URL!». Следующий этап — попробовать получить внутренние страницы, обращаясь на адрес 127.
, localhost
и другие его варианты. На запросы такого плана получаем ошибку «Cannot load remote URL!».
Значит, сервер все же делает какой‑то запрос. Давай тогда запустим на своем хосте веб‑сервер:
python3 -m http.server 80
Выполняем запрос на него и видим, что в отдельной вкладке открылся PDF, содержащий ответ нашего сервера.

Теперь с помощью exiftool мы можем посмотреть, какая программа была использована, чтобы сгенерировать PDF.

Узнаем не только название генератора, но и его точную версию: pdfkit v0.8.6. Отлично, значит, мы можем поискать готовые эксплоиты.
А так как мы знаем технологию, сразу проверяем публично доступные эксплоиты. Можешь использовать специальные средства вроде searchsploit, но куда проще поискать в Google.

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