Содержание статьи
А поможет нам в этом тренировочная машина Intentions с площадки Hack The Box сложного уровня (hard).
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
10.10.11.220 intentions.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 1.18.0. Брутить SSH на машинах с HTB не принято, а на сайте нас встречает форма авторизации и регистрации.
Точка входа
Регистрируем нового пользователя и авторизуемся на сайте.
На странице профиля пользователя находим поле, на которое мы можем воздействовать.
Заглянув в Burp History (а все действия я рекомендую проводить через Burp), обнаружим, что используется API.
В поле изменения жанра я попробовал вставить нагрузку '
для SQL-инъекции и в ответе получил те же данные, только без пробелов.
Стоит отметить, что нагрузку мы отправляем к API /
, а проверяем измененные данные через API /
.
Точка опоры
Burp Macro
Первым делом я решил перебрать разные нагрузки с помощью Burp Intruder. Но сложность в том, что нужно выполнять два запроса — один с нагрузкой, а другой для проверки результата. Тут нам могут помочь макросы, которые задаются через настройки Burp. Переходим к списку правил сессии и создаем новое.
В открывшемся окне в поле Rule actions создаем новый макрос run
— то есть выполняемый после основного запроса.
Для созданного макроса открываем Editor и выбираем запрос к API: /
. Здесь мы получаем текущее значение настроек профиля.
Подтверждаем — и в окне с настройками созданного правила видим наш макрос.
Переходим на вкладку Scope и в параметре URL scope выбираем Include all URLs, чтобы правило применялось абсолютно ко всем запросам.
Подтверждаем установленные параметры и видим созданное правило в общем списке правил.
Теперь переносим запрос к API /
в Burp Intruder. В настройках переходим к опции Grep → Extract и указываем интересующее нас поле, чтобы добавить его содержимое в общую таблицу результатов Intruder.
Так как мы используем правило с несколькими запросами, перебирать нужно в один поток.
Просмотрев результат, я ничего необычного не нашел, кроме того, что мы получаем ошибку при отправке символа "
. Таким образом, как бы ни менялось поле жанра, ничего интересного мы не добиваемся.
Немного побродив по сайту, замечаем, что жанр также используется при просмотре галереи. Там выполняется вызов API /
.
Мы получаем разные изображения в зависимости от установленного у нас жанра. Этот момент тоже необходимо протестировать, поэтому возвращаемся к нашим правилам и изменяем макрос, чтобы он выполнял запрос к API /
. Для изменения выбираем Re-record macro и отмечаем нужный запрос.
После изменения макроса переводим запрос в Burp Repeater и отправляем обычную нагрузку с комментарием для Boolean-based-инъекции test'
.
В ответ получаем ошибку — видимо, из‑за кавычки. Тогда пробуем указать нагрузку без кавычки.
Запрос обработан, но данные никакие не получаем. Переходим к перебору нагрузок.
SQL-инъекция
Настраиваем Burp Intruder в один поток, только в этот раз ничего извлекать из ответа не будем, а просто отсортируем результат по размеру ответа.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»