###### tags: `WEB` # WEB_Basic-Горбаконь_Кирилл-Практика_3 Место жительства: г. Москва ## Основные атаки и паттерны **SQL-injection уязвимости:** - [lab-login-bypass](https://portswigger.net/web-security/sql-injection/lab-login-bypass) В поле логина вводим инъекцию `administrator'--`. Запрос к БД получится следующим: `SELECT * FROM users WHERE username = 'administrator'--` ~~AND password = '***'~~ Проверка пароля закомментирована и учтена не будет. ![](https://i.imgur.com/HE74krY.png) Успешно входим в аккаунт. ![](https://i.imgur.com/gdiryta.png) - [lab-retrieve-hidden-data](https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data) Переходим в категорию *Gifts*. В адресной строке дописываем запрос: `?category=Gifts' OR 1=1--` С помощью такого запроса мы сможем увидеть все товары из базы данных. В запросе содержится набор двух условий, связанных оператором ИЛИ. Поскольку условие 1=1 всегда истинно, будет выведен каждый товар. ![](https://i.imgur.com/o5rGLj0.png) Задание успешно выполнено. ![](https://i.imgur.com/ysKxkj9.png) - [lab-retrieve-data-from-other-tables](https://portswigger.net/web-security/sql-injection/union-attacks/lab-retrieve-data-from-other-tables) Чтобы получить данные из другой таблицы воспользуемся операцией UNION. Отправим следующий запрос: ![](https://i.imgur.com/VlYw1lF.png) Среди выведенных данных находим учетную запись администратора. ![](https://i.imgur.com/FB579ml.png) Задание успешно выполнено. ![](https://i.imgur.com/7cfg3EX.png) - [lab-querying-database-version-mysql-microsoft](https://portswigger.net/web-security/sql-injection/examining-the-database/lab-querying-database-version-mysql-microsoft) Определяем количество столбцов в таблице: 2 ![](https://i.imgur.com/0qOZ656.png) Отправляем запрос `SELECT @@version, 'a'#` ![](https://i.imgur.com/qKh8FhJ.png) Выводится версия - 8.0.30 ![](https://i.imgur.com/d5lTawt.png) Задание успешно выполнено. ![](https://i.imgur.com/kA1DKDr.png) **XSS уязвимости:** - [lab-html-context-nothing-encoded](https://portswigger.net/web-security/cross-site-scripting/stored/lab-html-context-nothing-encoded) Открываем любую запись и в поле комментария вписываем вредоносный код. ![](https://i.imgur.com/Akv6AsZ.png) Задание успешно выполнено. ![](https://i.imgur.com/G6BVB2f.png) - [lab-document-write-sink](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink) Вводим поисковый запрос и исследуем код элемента. Запрос был записан в тег `<img src>`. ![](https://i.imgur.com/ov0OQvz.png) В открытых источниках ищем, как эксплуатировать XSS-уязвимости с помощью HTML-тегов. ![](https://i.imgur.com/YhHoCi8.png) Вставляем пейлоад `"><svg onload=alert(1)//`, скрипт сработал. ![](https://i.imgur.com/pL3KTqk.png) - [lab-javascript-string-angle-brackets-html-encoded](https://portswigger.net/web-security/cross-site-scripting/contexts/lab-javascript-string-angle-brackets-html-encoded) Введем поисковый запрос и исследуем код элемента. Текст запроса записывается в переменную. Попробуем проэксплуатировать такую систему ввода данных. ![](https://i.imgur.com/eE6MAb2.png) Составляем следующий запрос: `ABC'; alert(1);` ![](https://i.imgur.com/QQnYttM.png) Скрипт не сработал. В конец запроса автоматически вставляется закрывающая кавычка. Добавим кавычку в конец своего запроса. `ABC'; alert(1);'` ![](https://i.imgur.com/YyZvZ6m.png) Скрипт успешно сработал. ![](https://i.imgur.com/kOtWRbN.png) Задание выполнено. ![](https://i.imgur.com/x1O9PwD.png) - [lab-dom-xss-reflected](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-dom-xss-reflected) Отправляем запрос. Исследуя код элемента видим, что для поиска по запросу задействуется .js файл. ![](https://i.imgur.com/bzU0aUx.png) Откроем его. `/resources/js/searchResults.js` ![](https://i.imgur.com/YXTy9HC.png) В функции поиска видим строку: `eval('var searchResultObj = ' + this.responseText);`, Где `this.responseText` - введенный нами запрос. Функция `eval()` в JS не является безопасной, поскольку может исполнять произвольный код(аналог `exec()` в *Python*). Вводим запрос: `\"-alert(1)}//`. ![](https://i.imgur.com/3WBX7zm.png) Задание успешно выполнено. ![](https://i.imgur.com/gAQBere.png) **CSRF:** - [lab-no-defenses](https://portswigger.net/web-security/csrf/lab-no-defenses) Входим в аккаунт **wiener:peter**. ![](https://i.imgur.com/kcjn7pM.png) Обновляем e-mail. ![](https://i.imgur.com/swG79Qc.png) В истории находим запрос со сменой почты, копируем его URL. ![](https://i.imgur.com/kUEnYTO.png) Переходим в *exploit server*, формируем эксплойт, отправляем его по выбранному адресу. ![](https://i.imgur.com/bwpTsbI.png) Задание успешно выполнено. ![](https://i.imgur.com/gYaoVei.png) - [lab-token-validation-depends-on-request-method](https://portswigger.net/web-security/csrf/lab-token-validation-depends-on-request-method) Входим в аккаунт, обновляем e-mail. Находим запрос со сменой почтового адреса, копируем его URL. ![](https://i.imgur.com/HEAoXGV.png) Переходим в *exploit server*. Составляем экплойт, как в предыдущем задании, но меняем метод запроса на GET. ![](https://i.imgur.com/IqVQFPS.png) Задание успешно выполнено. ![](https://i.imgur.com/WOgnTAj.png) **SSRF:** - [lab-basic-ssrf-against-localhost](https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost) Открываем описание товара и нажимаем на **Check stock**. ![](https://i.imgur.com/KBqdVdm.png) Перехватываем запрос в **Burp**. ![](https://i.imgur.com/eGMLzfs.png) Меняем значение `stockApi` на `http://localhost/admin/delete?username=carlos`. ![](https://i.imgur.com/TWpKTrP.png) Задание успешно выполнено. ![](https://i.imgur.com/BoaOH1a.png) - [lab-ssrf-filter-bypass-via-open-redirection](https://portswigger.net/web-security/ssrf/lab-ssrf-filter-bypass-via-open-redirection) Заходим на старницу товара и нажимаем *Next product*. Перехватываем этот запрос в **Burp**. В запросе используется переадресация, попробуем подставить в поле `path=` другой адрес. ![](https://i.imgur.com/Bj90gMw.png) Перехватываем запрос при клике на **Check stock**, как в предыдущем задании. В значении `stockApi` вставляем адрес с предыдущего скриншота и меняем путь: `path=http://192.168.0.12:8080/admin/delete?username=carlos` ![](https://i.imgur.com/9dOjog1.png) Задание успешно выполнено. ![](https://i.imgur.com/G2KbcZx.png) **RCE:** - [os-command-injection/lab-simple](https://portswigger.net/web-security/os-command-injection/lab-simple) Ловим запрос при нажатии на кнопку **Check stock**. ![](https://i.imgur.com/iR1xJMS.png) Изменяем значение `storeId=3|whoami`. Получаем ответ: ![](https://i.imgur.com/sw7HNRG.png) Задание успешно выполнено. ![](https://i.imgur.com/7l6vqhf.png) **Path traversal:** - [file-path-traversal/lab-simple](https://portswigger.net/web-security/file-path-traversal/lab-simple) Выбираем любой товар и ловим запрос в **Burp**. ![](https://i.imgur.com/h2PAgCe.png) Меняем имя изображения на `../../../etc/passwd`. ![](https://i.imgur.com/IoaYCs5.png) В ответе получаем содержимое файла. ![](https://i.imgur.com/jKeV2Aw.png) Задание успешно выполнено. ![](https://i.imgur.com/6vOtpJL.png) - [file-path-traversal/lab-absolute-path-bypass](https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass) Выбираем любой товар из списка, переходим на его страницу и перехватываем запрос в **Burp**. В запросе содержится параметр `filename`. ![](https://i.imgur.com/YPKmH81.png) Изменим его значение на `/etc/passwd`. ![](https://i.imgur.com/WpwqWzJ.png) В ответе получаем содержимое файла. ![](https://i.imgur.com/IQQcuNj.png) Задание успешно выполнено. ![](https://i.imgur.com/OYnjRvz.png) * Статистика пройденных заданий. ![](https://i.imgur.com/lk2DhaI.png) ![](https://i.imgur.com/ADSI8ly.png) ![](https://i.imgur.com/mEowBnU.png) ![](https://i.imgur.com/rMHMYm7.png) ![](https://i.imgur.com/fXtpGWb.png) ![](https://i.imgur.com/Dc0IJZc.png) ![](https://i.imgur.com/jLYW58A.png) ![](https://i.imgur.com/UxPnV9s.png) ![](https://i.imgur.com/nocgBc6.png) ![](https://i.imgur.com/T22MvCl.png) ![](https://i.imgur.com/HJrlpOc.png) ![](https://i.imgur.com/usdltsI.png)