# Занятие 3. Основные атаки и паттерны # # Перехват трафика в burp suite # Зайдём на вкладку proxy и нажмём open brouser ![](https://i.imgur.com/LQ94SsU.png) Откроется окно браузера с уже настроенными параметратми proxy ![](https://i.imgur.com/ETc5NnB.png) Чтобы отправить пакет в повторитель нужно нажать следующее ![](https://i.imgur.com/qyUTorP.png) Для того чтобы отправит пакет при перехвате нужно нажать forward ![](https://i.imgur.com/yuxWZcl.png) Можно установить intercept off тогда приложение не будет ждать подверждения отправки пакетов. Все пакеты можно будет увидеть на вкладке http history ![](https://i.imgur.com/pRZG7LX.png) Нужно нажать сюда чтобы включить настройку фильтра ![](https://i.imgur.com/x68ucDQ.png) Подобные действия выполнялись в ходе выполнения лабораторной работы. # SQL-injection уязвимости # ## Задание 1 ## Поля формы авторизации уязвимы для sql инъекции позволяющей обойти авторизацию. Перехватим пакет ![](https://i.imgur.com/3fqlYLL.png) Изменим поле username на administrator'— ![](https://i.imgur.com/I1F4hhK.png) Авторизация прошла успешно ![](https://i.imgur.com/QfubkNu.png) Подобную атаку можно было произвести через браузер просо заполнив поля формы ![](https://i.imgur.com/uAg0SvK.png) Сначала мы закрываем одинарной кавычкой поле строки. Это позволяет игнорировать остальной запрос. -- это символ комментария в sql поэтому остальная часть запроса игнорируется. Пароль можно вводить любым так как он будет проигнорирован. Имеется так же символ комментариев #, который пригодится в других работах. ## Задание 2 ## Сайт содержит уязвимость внедрения sql в фильтре категории продукта. Когда пользователь выбирает категорию продукта приложение выполняет sql запрос. В данной лабораторной работе нужно вывести информацию о всех продуктах как выпущенных, так и о не выпущенных. Откроем сайт и выберем какую-либо категорию чтобы воспользоваться фильтром категории. Перехватим запрос ![](https://i.imgur.com/GvshCPt.png) ![](https://i.imgur.com/3389uGw.png) Происходит выбор всех строк таблице, где значения столбца категории равно Pets. Чтобы проверить наличие у сервера уязвимости sql инъекции в фильтре добавим к запросу символ кавычки или двойной кавычки ![](https://i.imgur.com/Sb91rZm.png) ![](https://i.imgur.com/bEkcmj9.png) Получим ошибку со стороны веб приложения, потому что мы нарушили sql запрос и сделали его некорректным – допустили синтаксическую ошибку. Теперь можно добавить в фильтр категории логическое выражение равное true чтобы вывести строки в любом случае. Воспользуемся OR логическое или. '+OR+1=1-- ![](https://i.imgur.com/Ga518R5.png) Отправим изменённый запрос ![](https://i.imgur.com/BIIXxOk.png) Так же можно было выполнить атаку через браузер введя запрос в адресной строке ![](https://i.imgur.com/RmoxK5O.png) ![](https://i.imgur.com/zZIrSbQ.png) ## Задание 3 ## Уязвимость инъекции sql так же находится в фильтре категории продукта. Определим количество столбцов и тип данных в этих столбцах. Убедимся, что фильтр категории уязвим для инъекции ![](https://i.imgur.com/VrXuyQa.png) В ответ получаем ошибку от веб приложения, потому что была допущена синтаксическая ошибка в запросе ![](https://i.imgur.com/4JlcjWh.png) Сначала определим количество столбцов в выводимой веб приложением таблице. Для этого используем order by и будем итеративно упорядочивать по каждому столбцу пока не получим ошибку от веб приложения. Упорядочить таблицу вывода по столбцу которого нет неважнможно что и даст нам возможность определить число столбцов в выводимой таблице. ‘ order by 1 ![](https://i.imgur.com/YYYDRiN.png) Строчку нужно закодировать. Или добавить вместо пробела знак + ![](https://i.imgur.com/Ec5Ij9r.png) Сортировка по 1 столбцу ![](https://i.imgur.com/xMX0H46.png) Сортировка по 2 столбцу ![](https://i.imgur.com/yinMtEC.png) Сортировка по 3 столбцу ![](https://i.imgur.com/V2y4jva.png) Сервер выдал ошибку значит число столбцов 3-1=2 Определим тип данных столбцов. Для этого воспользуемся оператором объединения. Вместо типа, данных который нам неизвестен будет подставлять NULL. '+UNION+SELECT+'abc','def'-- ![](https://i.imgur.com/vpfqqV6.png) Попробуем подставить строку во старой столбец ![](https://i.imgur.com/9dU1yhr.png) В итоге получим два столбца с текстовым типом данных. Поэтому мы можем подставить в эти два столбца вывод интересующих нас полей из другой таблице. Выведем логин и пароль пользователя из таблицы users. '+UNION+SELECT+username,+password+FROM+users-- ![](https://i.imgur.com/Euw2uKp.png) Атаку можно провести и в адресной строке ![](https://i.imgur.com/TAlPhd9.png) Зайдём под администратором ![](https://i.imgur.com/a2Zqpy6.png) ![](https://i.imgur.com/VfMbp8v.png) ## Задание 4 ## SQL инъекции на основе объединения. Перехватим запрос и отправим его в повторитель. Затем определим количество столбоц с помощью сортировки столца order by ![](https://i.imgur.com/YpuoppZ.png) ![](https://i.imgur.com/e6XOPIW.png) ![](https://i.imgur.com/lNRHMGG.png) Было определенно, что в таблице содержится два столбца. Заполним оба столбца текстом ![](https://i.imgur.com/QqHN2VD.png) Оба столбца имеют текстовый тип данных. Запрос возвращает два столбца каждый из которых является текстовым. Версия базы данных ![](https://i.imgur.com/Sb7Ug6U.png) ![](https://i.imgur.com/awZfReR.png) # XSS уязвимости # ## Задание 1 ## Уязвимость позволяет выполнить скрипт на сайте при отправке комментария в блоге. Напишем в комментарии следующее ![](https://i.imgur.com/3IV09qw.png) Опобликуем его ![](https://i.imgur.com/wSbyM4D.png) Была вызвана функция оповещения ![](https://i.imgur.com/7ceTq00.png) ## Задание 2 ## Выполним поиска abcd123456 и увидим, что строка поиска помещается внутри тега источника изображения ![](https://i.imgur.com/s7IyWXJ.png) Можно также вызвать функцию оповещения ![](https://i.imgur.com/ldsy3DB.png) ![](https://i.imgur.com/dJZELwp.png) ## Задание 3 ## Перехватим трафик в burp suite и убедимся, что строка поиска помещается в тег javascript ![](https://i.imgur.com/vNSXaLf.png) Напишем в поисковой строке: '-alert(1)-' и вызовем функцию оповещения ![](https://i.imgur.com/xyvSpua.png) Запрос, который был подменён ![](https://i.imgur.com/ih76cdR.png) ## Задание 4 ## Функция intercept включена ![](https://i.imgur.com/DqvL2Ao.png) Введём случайную строку. Строка отражается в ответе JSON ![](https://i.imgur.com/4dAMrrj.png) Просмотрим searchResults.js и обратим внимание, что ответ JSON используется с вызовом функции eval() ![](https://i.imgur.com/ywX1OgP.png) Двойная кавычка обрабатывается без экранирования. Поскольку вы ввели обратную косую черту, а сайт не экранирует их, когда ответ JSON пытается избежать открывающего символа двойных кавычек, он добавляет вторую обратную косую черту. В результате получается двойная обратная косая черта, которая эффективно отменяет экранирование. Это означает, что двойные кавычки обрабатываются без экранирования, что закрывает строку, которая должна содержать поисковый запрос. Затем арифметический оператор (в данном случае оператор вычитания) используется для разделения выражений перед вызовом функции alert(). Наконец, закрывающая фигурная скобка и две косые черты раньше закрывают объект JSON и закомментируют остальную часть объекта. В результате формируется следующий ответ ![](https://i.imgur.com/gDM4FgO.png) Заполним строку поиска и отправим пакет ![](https://i.imgur.com/tsoh3d7.png) логин пароль: wiener:peter # CSRF уязвимости # ## Задание 1 ## Зайдём под пользователем wiener ![](https://i.imgur.com/U6wGl79.png) Изменим почту ![](https://i.imgur.com/r3n9GPq.png) ![](https://i.imgur.com/LP8jTkK.png) Пост запрос изменения почты ![](https://i.imgur.com/PX9t55o.png) Для генерации была скачена программы с get hub csrf-poc-generator-master ![](https://i.imgur.com/t6K1B3n.png) Сгенерируем CSRF ![](https://i.imgur.com/WbFTr2o.png) Злоумышленник может разместить данный html и жертва, щёлкнув на него изменит свою почту. Заменим почту ![](https://i.imgur.com/IY7RroG.png) ![](https://i.imgur.com/dlydbfS.png) Нажмём на кнопку и почта будет изменена ![](https://i.imgur.com/4B4wSL4.png) Добавим строчки ![](https://i.imgur.com/8yGceMW.png) ![](https://i.imgur.com/EDSA5sE.png) Теперь пользователю не нужно нажимать на кнопку эксплоит срабатывает автоматически ![](https://i.imgur.com/ZoCvvn8.png) ## Задание 2 ## Имеется неполная защита от csrv атак. Зайдём за пользователя wiener:peter ![](https://i.imgur.com/F72wgN1.png) ![](https://i.imgur.com/Sxwp9HE.png) Перехватим запрос ![](https://i.imgur.com/aNjxVV0.png) Изменим почту через post метод. Если не удалят csrf из запроса, то выдаст ошибка 302 ![](https://i.imgur.com/fTMT6kD.png) При удалении csrf появляется ошибка ![](https://i.imgur.com/TturuFV.png) Выдаётся сообщение о том, что не хватает параметра csrf. Однако можно изменить метод запроса ![](https://i.imgur.com/m5t9r5I.png) ![](https://i.imgur.com/sC8lN22.png) Теперь ошибка не появляется. Сообщение о том, что не хватает csrf не появляется значит приложение уязвимо к csrf атакам ![](https://i.imgur.com/2YFfSxV.png) Изменим почту ![](https://i.imgur.com/URHm20X.png) ![](https://i.imgur.com/RJLPeGp.png) # SSRF # ## Задание 1 ## Перейдём на страницу продукта и проверим наличие воспользовавшись функцией проверки наличия продукта ![](https://i.imgur.com/9L1HoUc.png) Перехватим пакет ![](https://i.imgur.com/ojjGzfH.png) Декодируем адрес ![](https://i.imgur.com/nRzDycK.png) ![](https://i.imgur.com/Mabgcl0.png) Используется внешний адрес к функции. Проверим доступна ли уязвимость ssrf ![](https://i.imgur.com/VNxxhHp.png) Посмотрим ответ через рендер ![](https://i.imgur.com/uQdHPr5.png) Найдём слово admin ![](https://i.imgur.com/fjxGBsX.png) Адрес к панели админа ![](https://i.imgur.com/f6kEuCD.png) Напишем ![](https://i.imgur.com/kmNAnaM.png) Теперь обычному пользователю доступна панель администратора ![](https://i.imgur.com/aLJDpja.png) Найдём путь для удаления пользователя carlos ![](https://i.imgur.com/qj5FWbm.png) Поменяем путь ![](https://i.imgur.com/Nx7Rm71.png) Удалим пользователя ![](https://i.imgur.com/QWNVuGX.png) Проверим есть ли пользователь ![](https://i.imgur.com/Rl2VcqR.png) Пользователь был удалён ## Задание 2 ## Уязвимость перенаправления. Зайдём на страничку продукта и проверим наличие товара ![](https://i.imgur.com/K2D3HEq.png) Так же отправим в повторитель запрос на следующий продукт. Найдём соответствующий запрос в burp suite Проверка наличия продукта ![](https://i.imgur.com/wuCssRa.png) Следующая страница продукта ![](https://i.imgur.com/hno13Co.png) Отправим, запрос в повторитель. Используется внутрений путь к функции поэтому использовать внешний адрес не получится ![](https://i.imgur.com/L2LcQ08.png) ![](https://i.imgur.com/EjTsv7S.png) При запросе следующего продука есть переменная пути. Происходит перенаправление по пути указанному в pat ![](https://i.imgur.com/QzIJbPo.png) Отправим пакет ![](https://i.imgur.com/2HILfIN.png) Проследуем по перенаправлению follow redirection. Мы попале на страничку productid=3 что был указан в path ![](https://i.imgur.com/AWH9JCC.png) Приложение уязвимо к перенаправлению. Приложение может перенаправить на произвольный url адрес ![](https://i.imgur.com/ivC13dC.png) ![](https://i.imgur.com/OOpvchu.png) Скопируем строку адреса из запроса на следующий продукт ![](https://i.imgur.com/aKDtVnP.png) Заменим путь на http://192.168.0.12:8080/admin закодируем адрес и получим доступа к консоли администратора ![](https://i.imgur.com/lspd6hT.png) ![](https://i.imgur.com/8dTQtOd.png) Обнаружим ссылку для удаления пользователя ![](https://i.imgur.com/PhNpOlN.png) Удалим пользователя и проверим ![](https://i.imgur.com/tfPMk3X.png) Пользователь был успешно удалён # RCE # ## Задание 1 ## Узнаем наличие продукта и перехватим запрос ![](https://i.imgur.com/Ax4AQtw.png) Добавим команду whoami для того чтобы узнать текущего пользователя ![](https://i.imgur.com/XaO8JQm.png) # Path traversal # ## Задание 1 ## Изменим настройки фильтра ![](https://i.imgur.com/ddZ1bzW.png) Отроем страницу продукта и перехватим трафик ![](https://i.imgur.com/VrqBoxM.png) ![](https://i.imgur.com/P90ryLr.png) Изменим путь до файла и увидим, что ответ от веб приложения содержит содержимое файла ![](https://i.imgur.com/JjMh9eO.png) ## Задание 2 ## Откроем страницу товара и перехватим трафик ![](https://i.imgur.com/sAN7zA5.png) ![](https://i.imgur.com/VItrdQj.png) Отправим запрос в репитор ![](https://i.imgur.com/UXSNtqQ.png) Изменим путь и увидем, что Ответ веб приложения содержит содержимое файла /etc/password ![](https://i.imgur.com/U42TRsE.png) # Статистика # Общая статистика ![](https://i.imgur.com/BaJmDlQ.png) Статистика по заданиям ![](https://i.imgur.com/U3UAfvy.png) ![](https://i.imgur.com/cw4Hop7.png) ![](https://i.imgur.com/8Slmd24.png) ![](https://i.imgur.com/TGrrmDd.png) ![](https://i.imgur.com/RKaFZII.png) ![](https://i.imgur.com/jk1uHwe.png) ![](https://i.imgur.com/EzMgFJr.png)