Наша цель — получение прав суперпользователя на машине Perfection с учебной площадки Hack The Box. Уровень задания — легкий.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
10.10.11.253 perfection.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.9p1;
- 80 — веб‑сервер Nginx.
Так как с SSH без учетных данных ничего сделать нельзя, переходим к просмотру и тестированию сайта на веб‑сервере.
Точка входа
На сайте находим пометку Powered by, из которой часто можно узнать, какой используется движок. В нашем случае это WEBrick 1.7.0.
На странице /
находим несколько полей ввода и веб‑форму.
На странице сказано, что нужно заполнить форму, при этом мы можем использовать значения N/A для Category и ноль для Grade и Weight.
После отправки данных на сервер все введенные значения отображаются на странице.
Если введенные пользователем данные отображаются на странице, значит, стоит поискать возможность проэксплуатировать это, заслав данные, которые заставят сервер выполнить наши команды. Одна из таких возможностей — инъекция команд в шаблон.
Без труда узнаём, что WEBrick написан на Ruby, и пробуем отправить пейлоад, использующий особенности этого языка: <
.
В выводе вместо введенной нами строки или результата вычисления получаем сообщение о том, что заблокирован вредоносный ввод. Значит, используется фильтр, который сигнализирует программе, что пользователь ввел что‑то потенциально опасное.
Точка опоры
Попробуем перебрать разные символы и последовательности, это даст нам понимание того, на какие из них будет срабатывать фильтр, а какие помогут его обойти. Начинаем со всех возможных символов в кодировке URLEncode.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»