# WEB Basic - 3 **SQL-injection уязвимости** 1. SQL injection vulnerability allowing login bypass - изучаем работу приложения, вводим произвольные логин и пароль. Сервер возвращает - Invalid username or password. ![](https://i.imgur.com/PnhYnSq.png) - подставляем ' в поле Username, возвращается - Internal Server Error, значит можно предположить, что нет фильтрации входных данных в SQL-запросах ![](https://i.imgur.com/CZKXmDN.png) - в Burp Suite изменяем параметр username на administrator'--', отбрасываем параметр пароля и отправляем запрос ![](https://i.imgur.com/eaPZdsW.png) ![](https://i.imgur.com/xE8wg8G.png) 2. Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data - изучаем работу приложения > всего -12 товаров, в 4-х категориях (по 3 в каждой) - в параметрах URL видим фильтрацию по категориям ![](https://i.imgur.com/4MO2ddX.png) > проверяя категории, вводим ' и комментарий в парамет в URL после категории товаров. > Видим вывод введенных символов, значит нет фильтрации в SQL-запросах на сервере ![](https://i.imgur.com/u2AeHLX.png) > дополним SQL-запрос - '+OR+1=1-- > Видим весь перечень товаров ![](https://i.imgur.com/p1RfpeT.png) - также можно посмотреть весь перечень изменяя параметр ID, так как там тоже нет фильтрации ![](https://i.imgur.com/r7KFKSd.png) 3. Lab: SQL injection UNION attack, retrieving data from other tables - для начала нужно узнать сколько столбцов в таблице - через Burp Suite дополняем запрос - '+UNION+SELECT+'abc' - сервер возвращает - Internal Server Error ![](https://i.imgur.com/mf4pgEp.png) - дополняем SQL-запрос - '+UNION+SELECT+'abc','def'-- - ответ от сервера изменился ![](https://i.imgur.com/uwBr8gE.png) - попробуем указать наименования столбцов из таблицы users- '+UNION+SELECT+username,+password+FROM+users-- ![](https://i.imgur.com/iA1jlTS.png) - видим вывод учетных записей нескольких пользователей ![](https://i.imgur.com/0HRht1L.png) - заходим под учетной записью администратора ![](https://i.imgur.com/EkhaRIR.png) 4. Lab: SQL injection attack, querying the database type and version on MySQL and Microsoft - узнаем сколько столбцов в таблице, в Burp Suite дописываем в SQL-запрос - '+UNION+SELECT+'abc','def'# ![](https://i.imgur.com/Fo8zn5V.png) - видим вывод в ответе введенные данные ![](https://i.imgur.com/oNeame8.png) - добавляем в запрос параметр версии ![](https://i.imgur.com/ZJE3Ooa.png) - в ответе Burp Suite и браузере видим версию MySQL ![](https://i.imgur.com/91UI6rp.png) **XSS уязвимости:** 1. Lab: Stored XSS into HTML context with nothing encoded - изучаем работу приложения: > видим, что к каждой публикации есть поле для ввода комментария, имя, e-mail и веб-сайта - попробуем заполнить эти поля и подставить спецсимволы, отправим комментарий и вернемся в блог > видим, что спецсимволы не экранируются ![](https://i.imgur.com/etWAYpW.png) - попробуем подставить скрипт и отправить комментарий ![](https://i.imgur.com/EJbheJe.png) - отправим комментарий ![](https://i.imgur.com/VjA1pDW.png) - вернемся в блог, скрипт сработал ![](https://i.imgur.com/ozo2l0g.png) 2. Lab: DOM XSS in document.write sink using source location.search - изучаем работу приложения > вводим произвольный запрос в поисковую строку и проверяем куда он падает в JS ![](https://i.imgur.com/4IeaTNl.png) - подставляем полезную нагрузку ![](https://i.imgur.com/QHusICz.png) - скрипт сработал ![](https://i.imgur.com/kXPNnrl.png) ![](https://i.imgur.com/JjLvuTV.png) 3. Lab: Reflected XSS into a JavaScript string with angle brackets HTML encoded - изучаем работу приложения > вводим произвольный запрос в поисковую строку и проверяем куда он падает в JS > данные попали в скрипт ![](https://i.imgur.com/0CcI1jT.png) - подставляем полезную нагрузку ![](https://i.imgur.com/n2Er9nU.png) - скрипт сработал ![](https://i.imgur.com/1Z8qqpd.png) ![](https://i.imgur.com/CHsqWNS.png) 4. Lab: Reflected DOM XSS - изучаем работу приложения > отправляем произвольный запрос и видим, что в ответе содержится json > ![](https://i.imgur.com/gYtqjwE.png) > формирует его функция, которая к результату поиска добавляет сам запрос ![](https://i.imgur.com/bqP4Dqj.png) > вводим произвольный запрос с спецсимволами в поисковую строку и видим, что они не экранируются ![](https://i.imgur.com/CyeoPma.png) - добавляем полузную нагрузку ![](https://i.imgur.com/t4G7kub.png) - скрипт сработал ![](https://i.imgur.com/v5l8BjM.png) ![](https://i.imgur.com/BAz4HfG.png) CSRF: 1. Lab: CSRF vulnerability with no defenses - заходим в приложение под учетной записью wiener ![](https://i.imgur.com/iXzT19V.png) - обновляем адрес электронной почты ![](https://i.imgur.com/xlNuGD9.png) - находим POST запрос в Burp Suite, который отсылали на измение почты ![](https://i.imgur.com/4iTAvQV.png) - пишем HTML-код, в котором указываем ссылку (параметр host в POST-запросе) на страницу изменения почты, метод и новую почту ![](https://i.imgur.com/SNpxfw3.png) - переходим на сервер эксплойтов, вставляем свой HTML-код в раздел «Body» и сохраняем ![](https://i.imgur.com/3Y9XXGi.png) - проверяем работу кода и отправляем жертве ![](https://i.imgur.com/LQV0ZR4.png) ![](https://i.imgur.com/nUs6y9D.png) 2. Lab: CSRF where token validation depends on request method - заходим в приложение под учетной записью wiene ![](https://i.imgur.com/J5YAyCB.png) - обновляем адрес электронной почты ![](https://i.imgur.com/TMN2Ynt.png) - в Burp Suite перехватываем запрос и видим, что это POST-запрос и есть параметр csrf ![](https://i.imgur.com/s2Ezqh7.png) - стоит учитывать, что если изменить параметр csrf запрос будет отклонен ![](https://i.imgur.com/u6anGXh.png) - пишем HTML-код в котором указываем метод GET, ссылку на страницу изменения почты и новую почту, но без указания параметра csrf ![](https://i.imgur.com/qZm4lbY.png) - переходим на сервер эксплойтов, вставляем свой HTML-код в раздел «Body» и сохраняем ![](https://i.imgur.com/iixyXn4.png) - проверяем работу кода и отправляем жертве ![](https://i.imgur.com/sQLvK9i.png) ![](https://i.imgur.com/HWonBV3.png) SSRF: 1. Lab: Basic SSRF against the local server - проверяем работу приложения > на каждой позиции (товаре) есть опция проверки остатков в определенном городе > значит приложения извлекает данные с сервера > ![](https://i.imgur.com/Z9zjYjL.png) - проверим возможность получения данных по URL > перехватываем запрос в Burp Suite и изменяем параметр stockApi ![](https://i.imgur.com/RmTo9gB.png) > сервер возвращает список админов и возможной опции их удаления ![](https://i.imgur.com/nCTwf40.png) > в HTML-коде находим путь для удаления пользователя ![](https://i.imgur.com/Cu1ve9m.png) - модифицируем запрос к серверу ![](https://i.imgur.com/LVUBNpd.png) > выполняем атаку ![](https://i.imgur.com/vL3zxkG.png) 2. Lab: SSRF with filter bypass via open redirection vulnerability - проверяем работу приложения > в каждом товаре есть опция перехода к следующему товару, причем путь помещается в заголовок ![](https://i.imgur.com/mmckDfF.png) - изменяя параметр stockApi невозможно отправить запрос напрямую другому хост ![](https://i.imgur.com/yFS3vAW.png) - попробуем перенаправить запрос используя парамет path и получим админский интерфейс ![](https://i.imgur.com/47rg1fY.png) - в HTML-коде находим путь для удаления пользовател ![](https://i.imgur.com/6uLp36h.png) - модифицируем запрос к серверу и удалим пользователя ![](https://i.imgur.com/FvKbU50.png) - задание выполнено ![](https://i.imgur.com/nozxZhO.png) RCE: Lab: OS command injection, simple case - проверяем работу приложения > видим в запросе параметры productId и storeId ![](https://i.imgur.com/CRwQvl7.png) - попробуем добавить команду для выполнения на сервере ![](https://i.imgur.com/JyKuOr5.png) - задание выполнено ![](https://i.imgur.com/8XTTl84.png) ![](https://i.imgur.com/JGo3XWc.png) Path traversal: 1. Lab: File path traversal, simple case - проверяем работу приложения > видим что при запросе использутся параметр filename в котором лежит файл (.jpg) ![](https://i.imgur.com/WWURjZt.png) - изменяем путь и файл, указываем абсолютный путь к файлу /etc/passwd ![](https://i.imgur.com/Rtvq3Gf.png) - задание выполнено ![](https://i.imgur.com/cuSK40X.png) 2. Lab: File path traversal, traversal sequences blocked with absolute path bypass - на примере предыдущего задания попробуем обратится к файлу /etc/passwd, но видим что здесь абсолютный путь заблокирован ![](https://i.imgur.com/zo7d42F.png) - попробуем обратится по относительному пути ![](https://i.imgur.com/lkQL7mi.png) - задание выполнено ![](https://i.imgur.com/zK5VQwE.png) ![](https://i.imgur.com/Pqd1q1y.png)