# Занятие 3. Основные атаки и паттерны #
# Перехват трафика в burp suite #
Зайдём на вкладку proxy и нажмём open brouser

Откроется окно браузера с уже настроенными параметратми proxy

Чтобы отправить пакет в повторитель нужно нажать следующее

Для того чтобы отправит пакет при перехвате нужно нажать forward

Можно установить intercept off тогда приложение не будет ждать подверждения отправки пакетов. Все пакеты можно будет увидеть на вкладке http history

Нужно нажать сюда чтобы включить настройку фильтра

Подобные действия выполнялись в ходе выполнения лабораторной работы.
# SQL-injection уязвимости #
## Задание 1 ##
Поля формы авторизации уязвимы для sql инъекции позволяющей обойти авторизацию.
Перехватим пакет

Изменим поле username на administrator'—

Авторизация прошла успешно

Подобную атаку можно было произвести через браузер просо заполнив поля формы

Сначала мы закрываем одинарной кавычкой поле строки. Это позволяет игнорировать остальной запрос.
-- это символ комментария в sql поэтому остальная часть запроса игнорируется. Пароль можно вводить любым так как он будет проигнорирован. Имеется так же символ комментариев #, который пригодится в других работах.
## Задание 2 ##
Сайт содержит уязвимость внедрения sql в фильтре категории продукта. Когда пользователь выбирает категорию продукта приложение выполняет sql запрос. В данной лабораторной работе нужно вывести информацию о всех продуктах как выпущенных, так и о не выпущенных.
Откроем сайт и выберем какую-либо категорию чтобы воспользоваться фильтром категории. Перехватим запрос


Происходит выбор всех строк таблице, где значения столбца категории равно Pets. Чтобы проверить наличие у сервера уязвимости sql инъекции в фильтре добавим к запросу символ кавычки или двойной кавычки


Получим ошибку со стороны веб приложения, потому что мы нарушили sql запрос и сделали его некорректным – допустили синтаксическую ошибку. Теперь можно добавить в фильтр категории логическое выражение равное true чтобы вывести строки в любом случае. Воспользуемся OR логическое или. '+OR+1=1--

Отправим изменённый запрос

Так же можно было выполнить атаку через браузер введя запрос в адресной строке


## Задание 3 ##
Уязвимость инъекции sql так же находится в фильтре категории продукта. Определим количество столбцов и тип данных в этих столбцах.
Убедимся, что фильтр категории уязвим для инъекции

В ответ получаем ошибку от веб приложения, потому что была допущена синтаксическая ошибка в запросе

Сначала определим количество столбцов в выводимой веб приложением таблице. Для этого используем order by и будем итеративно упорядочивать по каждому столбцу пока не получим ошибку от веб приложения. Упорядочить таблицу вывода по столбцу которого нет неважнможно что и даст нам возможность определить число столбцов в выводимой таблице. ‘ order by 1

Строчку нужно закодировать. Или добавить вместо пробела знак +

Сортировка по 1 столбцу

Сортировка по 2 столбцу

Сортировка по 3 столбцу

Сервер выдал ошибку значит число столбцов 3-1=2
Определим тип данных столбцов. Для этого воспользуемся оператором объединения. Вместо типа, данных который нам неизвестен будет подставлять NULL. '+UNION+SELECT+'abc','def'--

Попробуем подставить строку во старой столбец

В итоге получим два столбца с текстовым типом данных. Поэтому мы можем подставить в эти два столбца вывод интересующих нас полей из другой таблице. Выведем логин и пароль пользователя из таблицы users. '+UNION+SELECT+username,+password+FROM+users--

Атаку можно провести и в адресной строке

Зайдём под администратором


## Задание 4 ##
SQL инъекции на основе объединения. Перехватим запрос и отправим его в повторитель. Затем определим количество столбоц с помощью сортировки столца order by



Было определенно, что в таблице содержится два столбца. Заполним оба столбца текстом

Оба столбца имеют текстовый тип данных. Запрос возвращает два столбца каждый из которых является текстовым. Версия базы данных


# XSS уязвимости #
## Задание 1 ##
Уязвимость позволяет выполнить скрипт на сайте при отправке комментария в блоге. Напишем в комментарии следующее

Опобликуем его

Была вызвана функция оповещения

## Задание 2 ##
Выполним поиска abcd123456 и увидим, что строка поиска помещается внутри тега источника изображения

Можно также вызвать функцию оповещения


## Задание 3 ##
Перехватим трафик в burp suite и убедимся, что строка поиска помещается в тег javascript

Напишем в поисковой строке: '-alert(1)-' и вызовем функцию оповещения

Запрос, который был подменён

## Задание 4 ##
Функция intercept включена

Введём случайную строку. Строка отражается в ответе JSON

Просмотрим searchResults.js и обратим внимание, что ответ JSON используется с вызовом функции eval()

Двойная кавычка обрабатывается без экранирования. Поскольку вы ввели обратную косую черту, а сайт не экранирует их, когда ответ JSON пытается избежать открывающего символа двойных кавычек, он добавляет вторую обратную косую черту. В результате получается двойная обратная косая черта, которая эффективно отменяет экранирование. Это означает, что двойные кавычки обрабатываются без экранирования, что закрывает строку, которая должна содержать поисковый запрос. Затем арифметический оператор (в данном случае оператор вычитания) используется для разделения выражений перед вызовом функции alert(). Наконец, закрывающая фигурная скобка и две косые черты раньше закрывают объект JSON и закомментируют остальную часть объекта. В результате формируется следующий ответ

Заполним строку поиска и отправим пакет

логин пароль: wiener:peter
# CSRF уязвимости #
## Задание 1 ##
Зайдём под пользователем wiener

Изменим почту


Пост запрос изменения почты

Для генерации была скачена программы с get hub csrf-poc-generator-master

Сгенерируем CSRF

Злоумышленник может разместить данный html и жертва, щёлкнув на него изменит свою почту. Заменим почту


Нажмём на кнопку и почта будет изменена

Добавим строчки


Теперь пользователю не нужно нажимать на кнопку эксплоит срабатывает автоматически

## Задание 2 ##
Имеется неполная защита от csrv атак. Зайдём за пользователя wiener:peter


Перехватим запрос

Изменим почту через post метод. Если не удалят csrf из запроса, то выдаст ошибка 302

При удалении csrf появляется ошибка

Выдаётся сообщение о том, что не хватает параметра csrf. Однако можно изменить метод запроса


Теперь ошибка не появляется. Сообщение о том, что не хватает csrf не появляется значит приложение уязвимо к csrf атакам

Изменим почту


# SSRF #
## Задание 1 ##
Перейдём на страницу продукта и проверим наличие воспользовавшись функцией проверки наличия продукта

Перехватим пакет

Декодируем адрес


Используется внешний адрес к функции. Проверим доступна ли уязвимость ssrf

Посмотрим ответ через рендер

Найдём слово admin

Адрес к панели админа

Напишем

Теперь обычному пользователю доступна панель администратора

Найдём путь для удаления пользователя carlos

Поменяем путь

Удалим пользователя

Проверим есть ли пользователь

Пользователь был удалён
## Задание 2 ##
Уязвимость перенаправления. Зайдём на страничку продукта и проверим наличие товара

Так же отправим в повторитель запрос на следующий продукт. Найдём соответствующий запрос в burp suite
Проверка наличия продукта

Следующая страница продукта

Отправим, запрос в повторитель. Используется внутрений путь к функции поэтому использовать внешний адрес не получится


При запросе следующего продука есть переменная пути. Происходит перенаправление по пути указанному в pat

Отправим пакет

Проследуем по перенаправлению follow redirection. Мы попале на страничку productid=3 что был указан в path

Приложение уязвимо к перенаправлению. Приложение может перенаправить на произвольный url адрес


Скопируем строку адреса из запроса на следующий продукт

Заменим путь на http://192.168.0.12:8080/admin закодируем адрес и получим доступа к консоли администратора


Обнаружим ссылку для удаления пользователя

Удалим пользователя и проверим

Пользователь был успешно удалён
# RCE #
## Задание 1 ##
Узнаем наличие продукта и перехватим запрос

Добавим команду whoami для того чтобы узнать текущего пользователя

# Path traversal #
## Задание 1 ##
Изменим настройки фильтра

Отроем страницу продукта и перехватим трафик


Изменим путь до файла и увидим, что ответ от веб приложения содержит содержимое файла

## Задание 2 ##
Откроем страницу товара и перехватим трафик


Отправим запрос в репитор

Изменим путь и увидем, что Ответ веб приложения содержит содержимое файла /etc/password

# Статистика #
Общая статистика

Статистика по заданиям






