---
# System prepended metadata

title: Катенин Владимир - WEB Basic. Занятие 3. Основные атаки и паттерны

---

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

![](https://i.imgur.com/brlpzPj.jpg)

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

![](https://i.imgur.com/QMcSgNT.jpg)

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

![](https://i.imgur.com/470sc9q.jpg)

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

![](https://i.imgur.com/FzEK11g.jpg)

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

![](https://i.imgur.com/mAqyHhd.jpg)


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

![](https://i.imgur.com/YQTiD8A.jpg)


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

![](https://i.imgur.com/6hxoOrn.jpg)


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

![](https://i.imgur.com/XAOAy29.jpg)


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

![](https://i.imgur.com/x3hS0oz.jpg)

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

![](https://i.imgur.com/dOnmqq5.jpg)


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

![](https://i.imgur.com/GNRcQGH.jpg)


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

![](https://i.imgur.com/1GstjuD.jpg)


Успех

![](https://i.imgur.com/rRv1Ynt.jpg)


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

![](https://i.imgur.com/C3xLPTg.jpg)


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

Всё верно, получим версию БД с помощью `'+UNION+SELECT+@@version,+NULL#`

![](https://i.imgur.com/BMNmsI7.jpg)

Успех

![](https://i.imgur.com/aqQl1wy.jpg)


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

![](https://i.imgur.com/XoTWMIY.jpg)


Запостим

![](https://i.imgur.com/APTZJF6.jpg)


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

![](https://i.imgur.com/IwiRXqv.jpg)


**Скрипт выполнился**

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

![](https://i.imgur.com/qoB5XAY.jpg)


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

![](https://i.imgur.com/FzTLrz8.jpg)


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

![](https://i.imgur.com/6kfGE0e.jpg)


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

![](https://i.imgur.com/xdxBgbL.jpg)


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

![](https://i.imgur.com/mxVewX6.jpg)


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

![](https://i.imgur.com/vobK1A7.jpg)


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

![](https://i.imgur.com/nt2ffpU.jpg)


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

![](https://i.imgur.com/03ESoLU.jpg)


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

![](https://i.imgur.com/8LVpmp2.jpg)


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

![](https://i.imgur.com/aHFvqcR.jpg)


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

![](https://i.imgur.com/LSlbQkh.jpg)


Находим поисковый запрос в HTTP History с методом GET, видим, что отработка запроса происходит в файле searchResult.js

Откроем этот файл, видим функцию небезопасную eval()

![](https://i.imgur.com/zPlJqpK.jpg)

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

![](https://i.imgur.com/6UzSD6S.jpg)

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

![](https://i.imgur.com/oh4EuW8.jpg)

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

`wiener:peter`

![](https://i.imgur.com/YjZwFIi.jpg)


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

![](https://i.imgur.com/9lifDhs.jpg)


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

![](https://i.imgur.com/X9jzQk4.jpg)


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

![](https://i.imgur.com/XDThOAr.jpg)


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

![](https://i.imgur.com/noRfV1m.jpg)


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

`wiener:peter`

![](https://i.imgur.com/YJgDnnH.jpg)


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

![](https://i.imgur.com/FTAueIN.jpg)


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

Отправляем в Repeater и подменяем `csrf` параметр

![](https://i.imgur.com/HFs0XCI.jpg)

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

![](https://i.imgur.com/VN6sUP6.jpg)




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

![](https://i.imgur.com/rslwM8G.jpg)



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

![](https://i.imgur.com/d04cAyu.jpg)


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

![](https://i.imgur.com/SW7B0j0.jpg)

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

![](https://i.imgur.com/tkJTtVd.jpg)


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

![](https://i.imgur.com/WXaA6CP.jpg)


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

![](https://i.imgur.com/DKB3NzY.jpg)


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

Видим список пользователей

![](https://i.imgur.com/L9m4s29.jpg)

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

![](https://i.imgur.com/M1d1NRG.jpg)

Успех

![](https://i.imgur.com/OEFwmPi.jpg)

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

![](https://i.imgur.com/BxF2c31.jpg)


Пробуем зайти в админ-панель через `stockApi`

`http://192.168.0.12:8080/admin`

![](https://i.imgur.com/urQOuRj.jpg)


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

![](https://i.imgur.com/qlzSQPA.jpg)


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

![](https://i.imgur.com/oAhqXNt.jpg)


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

![](https://i.imgur.com/3SzrZ8Q.jpg)


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

![](https://i.imgur.com/HYPRQIF.jpg)


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

![](https://i.imgur.com/MIgVz3b.jpg)


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

![](https://i.imgur.com/L65qdHk.jpg)


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

![](https://i.imgur.com/pwAcd42.jpg)


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

![](https://i.imgur.com/YnXI8gt.jpg)


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

![](https://i.imgur.com/7JaZIii.jpg)


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

![](https://i.imgur.com/UCh6ZS6.jpg)


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

![](https://i.imgur.com/vrDvRv0.jpg)


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

![](https://i.imgur.com/2zQ2oUw.jpg)


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

![](https://i.imgur.com/qPArUZd.jpg)


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

![](https://i.imgur.com/S7jdR3C.jpg)


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

![](https://i.imgur.com/7bJ5ZHP.jpg)


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

![](https://i.imgur.com/saGGSF0.jpg)


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

![](https://i.imgur.com/CsSjSDY.jpg)


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

![](https://i.imgur.com/OxClCY2.jpg)


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

![](https://i.imgur.com/i46AbW3.jpg)

