Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /
:
10.10.11.220 intentions.htb
И запускаем сканирование портов.
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
ports=$(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 Intruder. Но сложность в том, что нужно выполнять два запроса — один с нагрузкой, а другой для проверки результата. Тут нам могут помочь макросы, которые задаются через настройки Burp. Переходим к списку правил сессии и создаем новое.
В открывшемся окне в поле Rule action создаем новый макрос 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'or
.
В ответ получаем ошибку — видимо, из‑за кавычки. Тогда пробуем указать нагрузку без кавычки.
Запрос обработан, но данные никакие не получаем. Переходим к перебору нагрузок.
Настраиваем Burp Intruder в один поток, только в этот раз ничего извлекать из ответа не будем, а просто отсортируем результат по размеру ответа.
|
|