Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этом райтапе я покажу, как эксплуатировать уязвимость в приложении на Ruby, возникшую из‑за непроверенной десериализации. По дороге для продвижения заюзаем баг в pdfkit и поищем учетные данные на удаленном хосте.
Наша цель — захват рута на тренировочной машине Precious с площадки Hack The Box. Уровень сложности — легкий.
Добавляем IP-адрес машины в /etc/hosts
:
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
).
Результат работы скрипта
Мы нашли всего два открытых порта:
Про SSH, как всегда на машинах с HTB, можно забыть, пока у нас нет учетных данных. Сразу откроем браузер для изучения веб‑сайта.
Справка: брутфорс учеток
Поскольку в начале прохождения у нас нет учетных данных, нет и смысла изучать службы, которые всегда требуют авторизации (например, SSH). Единственное, что мы можем делать здесь, — это перебирать пароли брутфорсом, но у машин с HTB почти всегда есть другое прохождение. В жизни таких вариантов может не быть, к тому же есть шансы подобрать пароль или получить его при помощи социальной инженерии.
Главная страница сайта precious.htb
Нас встречает форма конвертера веб‑страницы в файл PDF. А это потенциальная точка входа.
Первым же делом я попробовал прочитать локальный файл /etc/passwd
, запросив URL file:///etc/passwd
. На этот запрос сервер вернул ошибку «You should provide a valid URL!». Следующий этап — попробовать получить внутренние страницы, обращаясь на адрес 127.0.0.1
, localhost
и другие его варианты. На запросы такого плана получаем ошибку «Cannot load remote URL!».
Значит, сервер все же делает какой‑то запрос. Давай тогда запустим на своем хосте веб‑сервер:
python3 -m http.server 80
Выполняем запрос на него и видим, что в отдельной вкладке открылся PDF, содержащий ответ нашего сервера.
Содержимое сгенерированного PDF-файла
Теперь с помощью exiftool мы можем посмотреть, какая программа была использована, чтобы сгенерировать PDF.
Метаданные скачанного PDF-файла
Узнаем не только название генератора, но и его точную версию: pdfkit v0.8.6. Отлично, значит, мы можем поискать готовые эксплоиты.
А так как мы знаем технологию, сразу проверяем публично доступные эксплоиты. Можешь использовать специальные средства вроде searchsploit, но куда проще поискать в Google.
Поиск эксплоита для pdfkit
Видим упоминание уязвимости CVE-2022-25765. Давай разбираться.
Источник: xakep.ru