###### 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 = '***'~~
Проверка пароля закомментирована и учтена не будет.

Успешно входим в аккаунт.

- [lab-retrieve-hidden-data](https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data)
Переходим в категорию *Gifts*. В адресной строке дописываем запрос:
`?category=Gifts' OR 1=1--`
С помощью такого запроса мы сможем увидеть все товары из базы данных. В запросе содержится набор двух условий, связанных оператором ИЛИ. Поскольку условие 1=1 всегда истинно, будет выведен каждый товар.

Задание успешно выполнено.

- [lab-retrieve-data-from-other-tables](https://portswigger.net/web-security/sql-injection/union-attacks/lab-retrieve-data-from-other-tables)
Чтобы получить данные из другой таблицы воспользуемся операцией UNION. Отправим следующий запрос:

Среди выведенных данных находим учетную запись администратора.

Задание успешно выполнено.

- [lab-querying-database-version-mysql-microsoft](https://portswigger.net/web-security/sql-injection/examining-the-database/lab-querying-database-version-mysql-microsoft)
Определяем количество столбцов в таблице: 2

Отправляем запрос `SELECT @@version, 'a'#`

Выводится версия - 8.0.30

Задание успешно выполнено.

**XSS уязвимости:**
- [lab-html-context-nothing-encoded](https://portswigger.net/web-security/cross-site-scripting/stored/lab-html-context-nothing-encoded)
Открываем любую запись и в поле комментария вписываем вредоносный код.

Задание успешно выполнено.

- [lab-document-write-sink](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink)
Вводим поисковый запрос и исследуем код элемента. Запрос был записан в тег `<img src>`.

В открытых источниках ищем, как эксплуатировать XSS-уязвимости с помощью HTML-тегов.

Вставляем пейлоад `"><svg onload=alert(1)//`, скрипт сработал.

- [lab-javascript-string-angle-brackets-html-encoded](https://portswigger.net/web-security/cross-site-scripting/contexts/lab-javascript-string-angle-brackets-html-encoded)
Введем поисковый запрос и исследуем код элемента. Текст запроса записывается в переменную. Попробуем проэксплуатировать такую систему ввода данных.

Составляем следующий запрос:
`ABC'; alert(1);`

Скрипт не сработал. В конец запроса автоматически вставляется закрывающая кавычка. Добавим кавычку в конец своего запроса.
`ABC'; alert(1);'`

Скрипт успешно сработал.

Задание выполнено.

- [lab-dom-xss-reflected](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-dom-xss-reflected)
Отправляем запрос. Исследуя код элемента видим, что для поиска по запросу задействуется .js файл.

Откроем его.
`/resources/js/searchResults.js`

В функции поиска видим строку:
`eval('var searchResultObj = ' + this.responseText);`,
Где `this.responseText` - введенный нами запрос. Функция `eval()` в JS не является безопасной, поскольку может исполнять произвольный код(аналог `exec()` в *Python*). Вводим запрос: `\"-alert(1)}//`.

Задание успешно выполнено.

**CSRF:**
- [lab-no-defenses](https://portswigger.net/web-security/csrf/lab-no-defenses)
Входим в аккаунт **wiener:peter**.

Обновляем e-mail.

В истории находим запрос со сменой почты, копируем его URL.

Переходим в *exploit server*, формируем эксплойт, отправляем его по выбранному адресу.

Задание успешно выполнено.

- [lab-token-validation-depends-on-request-method](https://portswigger.net/web-security/csrf/lab-token-validation-depends-on-request-method)
Входим в аккаунт, обновляем e-mail. Находим запрос со сменой почтового адреса, копируем его URL.

Переходим в *exploit server*. Составляем экплойт, как в предыдущем задании, но меняем метод запроса на GET.

Задание успешно выполнено.

**SSRF:**
- [lab-basic-ssrf-against-localhost](https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost)
Открываем описание товара и нажимаем на **Check stock**.

Перехватываем запрос в **Burp**.

Меняем значение `stockApi` на `http://localhost/admin/delete?username=carlos`.

Задание успешно выполнено.

- [lab-ssrf-filter-bypass-via-open-redirection](https://portswigger.net/web-security/ssrf/lab-ssrf-filter-bypass-via-open-redirection)
Заходим на старницу товара и нажимаем *Next product*. Перехватываем этот запрос в **Burp**. В запросе используется переадресация, попробуем подставить в поле `path=` другой адрес.

Перехватываем запрос при клике на **Check stock**, как в предыдущем задании. В значении `stockApi` вставляем адрес с предыдущего скриншота и меняем путь: `path=http://192.168.0.12:8080/admin/delete?username=carlos`

Задание успешно выполнено.

**RCE:**
- [os-command-injection/lab-simple](https://portswigger.net/web-security/os-command-injection/lab-simple)
Ловим запрос при нажатии на кнопку **Check stock**.

Изменяем значение `storeId=3|whoami`. Получаем ответ:

Задание успешно выполнено.

**Path traversal:**
- [file-path-traversal/lab-simple](https://portswigger.net/web-security/file-path-traversal/lab-simple)
Выбираем любой товар и ловим запрос в **Burp**.

Меняем имя изображения на `../../../etc/passwd`.

В ответе получаем содержимое файла.

Задание успешно выполнено.

- [file-path-traversal/lab-absolute-path-bypass](https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass)
Выбираем любой товар из списка, переходим на его страницу и перехватываем запрос в **Burp**. В запросе содержится параметр `filename`.

Изменим его значение на `/etc/passwd`.

В ответе получаем содержимое файла.

Задание успешно выполнено.

* Статистика пройденных заданий.











