Содержание статьи
А поможет нам в этом тренировочная машина 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»
