Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Сегодня на примере легкой машины с площадки Hack The Box я покажу вполне типичный процесс захвата веб‑сервера. Начнем с неправильно настроенного редиректа, получим доступ к закрытым страницам, а точку опоры найдем через форму получения логов. Захватить флаг рута нам поможет ошибка в скрипте пользователя.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
10.10.11.104 writer.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 7.6p1) и 80 (веб‑сервер Apache 2.4.29). SSH пока пропустим.
Справка: брутфорс учеток
Поскольку в начале прохождения у нас нет учетных данных, нет и смысла изучать службы, которые всегда требуют авторизации (например, SSH). Единственное, что мы можем сделать здесь — это перебирать пароли брутфорсом, но у машин с HTB почти всегда есть другое прохождение. В жизни таких вариантов может не быть, к тому же есть шансы подобрать пароль или получить его при помощи социальной инженерии.
Остается «пробивать» веб. Внимательно изучим сайт в поисках любой важной информации. При загрузке сайта http://previse.htb
нас перебрасывают на страницу login.php
. Там нас встречает форма авторизации.
Форма авторизации
Незаменимое средство при анализе веб‑сайтов — набор программ Burp Pro. Например, входящий в него Burp Proxy при анализе сайта ведет свою историю запросов и ответов. Там мы можем найти наш редирект. Но что более удивительно, редирект выполнен неправильно, так как страница сначала загружается, а потом происходит перенаправление. Увидеть главною страницу можно во встроенном браузере Burp. Для этого активируем Response → Render.
Главная страница сайта в Burp Render
Таким образом мы можем просмотреть весь сайт.
Мы можем просматривать файлы сайта, но пока что способов продвинуться дальше не видно. Попробуем получить больше информации о содержимом каталогов при помощи перебора.
Справка: сканирование веба c fuff
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов с целью поиска скрытой информации и недоступной обычным посетителям функций. Для этого можно использовать программы вроде dirsearch и dirb.
Я предпочитаю легкий и очень быстрый ffuf. При запуске используем следующие параметры:
-w
— словарь (используем directory-list-2.3-medium из набора Seclists);
-t
— количество потоков;
-u
— URL;
-fc
— исключить из результата ответы с кодом 403.
Список популярных файлов на PHP можно найти в наборе словарей Seclists. Запускаем перебор:
ffuf -u http://previse.htb/FUZZ -w php_files_common.txt -t 200 -fc 403
Результат сканирования файлов
В выводе получаем много файлов, и некоторые выполняют редирект. А вот неизвестный до этого файл nav.php
возвращает код ответа 200. Взглянем на него через браузер и обнаружим обычную навигацию по сайту.
Страница nav.php
Теперь обойдем все страницы через Burp Proxy и просмотри ответы сервера. Чтобы удобно сделать это через браузер, будем перехватывать ответ от сервера и менять код ответа с 302 (перенаправление) на 200 (успешный ответ). Первым делом перехватываем запрос.
Перехват запроса в Burp Proxy
Теперь активируем перехват ответа. Для этого в контекстном меню выбираем Do intercept → Response to this request. После этого отправляем запрос, нажав на кнопку Forward. И сразу в этом же окне получим ответ.
Перехват ответа в Burp Proxy
Изменяем 302 Found
на 200 OK
.
Изменение ответа в Burp Proxy
Отправляем ответ, снова нажав на кнопку Forward. В браузере получаем нужную нам страницу.
Страница accounts.php
Подобным образом взглянем и на остальные страницы.
Страница files.php
Страница file_logs.php
Мы нашли интересную возможность, но нам она пока не доступна. Зато мы можем работать со страницей создания пользователя, чем и воспользуемся.
Сообщение об успешном создании пользователя
Шапка сайта
Перейдем к странице files.php
и скачаем бекап сайта.
Содержимое скачанного архива
В архиве много файлов, о некоторых мы даже и не знали. Переходим к этапу изучения исходного кода.
Среди файлов внутри архива обнаружим connect.php
. Этот файл обычно используется для указания настроек подключения к базе данных.
Содержимое файла connect.php
Источник: xakep.ru