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