# Катенин Владимир - WEB Basic. Занятие 3. Основные атаки и паттерны
[toc]
## SQL-injection уязвимости
### **Lab: SQL injection vulnerability allowing login bypass**
Открываем лабораторную работу

Открываем вкладку **My account** и вводим логин `administrator` и случайный пароль

Добавляем `'--` после логина

Отправляем запрос с помощью `Forward`
**Успешная авторизация**

---
### **Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data**
Открываем лабораторную работу, включаем intercept и выбираем категорию

Вместо категории вставляем `'+OR+1=1--`

Отправляем запрос и видим скрытые товары

---
### **Lab: SQL injection UNION attack, retrieving data from other tables**
Открываем лабораторную работу, включаем intercept и выбираем категорию и изменяем значение `category` на `'+UNION+SELECT+'abc','def'--`

Убедимся, что запрос возвращает две колонки

Всё верно, получим таблицу `users` с помощью `'+UNION+SELECT+username,+password+FROM+users--`

Видим таблицу с пользователями

Пробуем авторизоваться под логином администратора

Успех

---
### **Lab: SQL injection attack, querying the database type and version on MySQL and Microsoft**
Открываем лабораторную работу, включаем intercept и выбираем категорию и изменяем значение `category` на `'+UNION+SELECT+'abc','def'#`

Убедимся, что запрос возвращает две колонки
Всё верно, получим версию БД с помощью `'+UNION+SELECT+@@version,+NULL#`

Успех

---
## XSS уязвимости
### Lab: Stored XSS into HTML context with nothing encoded
Открываем лабораторную работу, переходим в любой пост и пишем в окне с новым комментарием `<script>alert(1)</script>`. Также введем имя и почту в соответствующие поля.

Запостим

Нажмём кнопку `Back to blog`

**Скрипт выполнился**
---
### Lab: DOM XSS in document.write sink using source location.search
Открываем лабораторную работу, вводим в поисковой строке случайный набор символов

Запрос помещен в тэг `img`

Попробуем вставить в поиск `"><svg onload=alert(1)>`

Скрипт сработал

---
### Lab: Reflected XSS into a JavaScript string with angle brackets HTML encoded
Открываем лабораторную работу, вводим в поисковой строке случайный набор символов

Включаем перехват запросов, делаем поиск в браузере и отправляем данные в Repeater

Видим, что искомая строка помещена в JS строку

Теперь вводим `'-alert(1)-'` в поисковую строку и нажимаем "Поиск"

Скрипт сработал

---
### Lab: Reflected DOM XSS
Открываем лабораторную работу, вводим в поисковой строке случайный набор символов

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

Находим поисковый запрос в HTTP History с методом GET, видим, что отработка запроса происходит в файле searchResult.js
Откроем этот файл, видим функцию небезопасную eval()

Попробуем ввести в поиск `\"-alert(1)}//`

Скрипт сработал

---
## CSRF
### Lab: CSRF vulnerability with no defenses
Открываем лабораторную работу, входим в данный условием задачи аккаунт
`wiener:peter`

Включаем перехват запросов и отправляем запрос на смену почты

Переходим в HTTP History и перехватываем запрос методом POST, копируем URL

Переходим на эксплойт-сервер, пишем скрипт, вставляя наш URL

Скрипт сработал

---
### Lab: CSRF where token validation depends on request method
Открываем лабораторную работу, входим в данный условием задачи аккаунт
`wiener:peter`

Отправим запрос на смену почтового адреса

Переходим в HTTP History и перехватываем запрос методом POST, копируем URL
Отправляем в Repeater и подменяем `csrf` параметр

Отправляем запрос, видим, что он блокируется

Поменяем метод с POST на GET

Пишем эксплойт и отправляем жертве

Скрипт сработал

---
## SSRF
### Lab: Basic SSRF against the local server
Открываем лабораторную работу, видим, что не можем напрямую попасть в админ-панель

Заходим в любой продукт, нажимаем `check stock`, перехватываем запрос

Отправляем в Repeater и видим значение `stockApi`

Меняем `stockApi` на `http://localhost/admin` и отправляем запрос
Видим список пользователей

Попробуем удалить пользователя `carlos`, изменив `stockApi` на `http://localhost/admin/delete?username=carlos`

Успех

---
### Lab: SSRF with filter bypass via open redirection vulnerability
Открываем лабораторную работу, заходим в любой продукт, нажимаем `check stock`, перехватываем запрос

Пробуем зайти в админ-панель через `stockApi`
`http://192.168.0.12:8080/admin`

Не получилось

При нажатии на next product появляется строчка с path

Переходим на страницу

Попробуем подменить `stockApi` на `/product/nextProduct?path=http://192.168.0.12:8080/admin`

Видим таблицу пользователей

Теперь удалим пользователя `carlos`, изменив `stockApi` на `/product/nextProduct?path=http://192.168.0.12:8080/admin/delete?username=carlos`

Пользователь удален

---
## RCE
### Lab: OS command injection, simple case
Открываем лабораторную работу, заходим в любой продукт, нажимаем `check stock`, перехватываем запрос

Изменим `storeID` на `1|whoami`

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

---
## Path traversal
### Lab: File path traversal, simple case
Открываем лабораторную работу, включаем перехват, заходим в любой продукт

Нажмем `Forward` и увидим, что страница получает картинку по GET запросу

Изменим параметр `filename` на `../../../etc/passwd`

Видим Response в HTTP History на наш запрос

---
### Lab: File path traversal, traversal sequences blocked with absolute path bypass
Открываем лабораторную работу, включаем перехват, заходим в любой продукт

Нажмем `Forward` и увидим, что страница получает картинку по GET запросу

Изменим параметр `filename` на `/etc/passwd`

Видим Response в HTTP History на наш запрос

---
## Прогресс
