Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Сегодня я покажу интересную уязвимость при загрузке файла на сервер. Мы используем трюк с нулевым байтом, который позволит обойти фильтрацию по расширению файла. Затем для повышения привилегий создадим и загрузим собственную библиотеку для Linux.
Наша цель — захват рута на тренировочной машине Zipping с площадки Hack The Box. Уровень ее сложности — «средний».
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
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
).
Результат работы скрипта
Скрипт нашел два открытых порта:
Давай посмотрим, что нам покажет веб‑сервер.
Главная страница сайта
Гуляя по страницам сайта, находим форму загрузки файлов, а это потенциальная точка входа.
Страница upload.php
На странице нам сообщают, что сервер ожидает загрузку ZIP-архвиа с файлом в формате PDF. При загрузке такого архива получаем ссылку на загруженный файл.
Результат загрузки файла
Загрузить что‑то иное не вышло. Неудачей оканчивается и загрузка архива, содержащего файл в другом формате.
Ошибка загрузки файла
Интересно, как веб сервер понимает, что архив содержит именно PDF. Определять можно по по сигнатуре, либо по расширению файла.
Запрос с загрузкой файла в Burp Proxy
Чтобы определить способ фильтрации, создадим обычный текстовый файл, но выставим расширение .pdf. Файл успешно загружается, значит фильтрация происходит по расширению.
Результат загрузки файла
Наша цель — загрузить файл, который смог бы исполняться веб‑сервером, например, скрипт на PHP. Мы могли бы запросить его и выполнить содержимое. Чтобы сервер правильно его распознал, обязательно задать расширение .php, но оно не пройдет мимо фильтра. Что делать?
Источник: xakep.ru