Наша цель — захват рута на тренировочной машине Zipping с площадки Hack The Box. Уровень ее сложности — средний.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
10.10.11.229 zipping.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 9.0p1;
- 80 — веб‑сервер Apache 2.4.54.
Давай посмотрим, что нам покажет веб‑сервер.

Точка входа
Гуляя по страницам сайта, находим форму загрузки файлов, а это потенциальная точка входа.

На странице нам сообщают, что сервер ожидает загрузку ZIP-архива с файлом в формате PDF. При загрузке такого архива получаем ссылку на загруженный файл.

Загрузить что‑то иное не вышло. Неудачей оканчивается и загрузка архива, содержащего файл в другом формате.

Интересно, как веб‑сервер понимает, что архив содержит именно PDF. Определять можно по по сигнатуре либо по расширению файла.

Чтобы определить способ фильтрации, создадим обычный текстовый файл, но выставим расширение .pdf. Файл успешно загружается, значит, фильтрация происходит по расширению.

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