# Макаров Дмитрий Владиславович - WEB basic. Практическая работа №3. Основные атаки и паттерны [toc] ## Статистика выполненных работ --- ![](https://i.imgur.com/VQm2N82.png) --- ![](https://i.imgur.com/o1yrHSj.png) --- ![](https://i.imgur.com/WIpv1BV.png) ![](https://i.imgur.com/61PsUZC.png) --- ![](https://i.imgur.com/Ra91tmg.png) --- ![](https://i.imgur.com/Os8chKE.png) --- ![](https://i.imgur.com/3ucLVMn.png) --- ![](https://i.imgur.com/DSIje4d.png) --- ![](https://i.imgur.com/2I41MuM.png) --- ## **SQL-injection уязвимости** **SQL injection** — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода. ### Lab: SQL injection vulnerability allowing login bypass Переходим в лабораторную работу --- ![](https://i.imgur.com/lSccUwO.png) --- Открываем **My accounts**. Вводим логин **administrator** и пароль на наш выбор. Перед отправкой формы включаем **intercept** в **Burp Suite**. Изменяем данные, чтобы получить доступ к пользователю. Добавляем имени пользователя следующие символы: `'--` --- ![](https://i.imgur.com/dewX1Cj.png) --- Отправляем форму через **intercept** --- ![](https://i.imgur.com/hxSVUev.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/Nmpo8KE.png) --- ### Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data Переходим в лабораторную работу. Включаем **intercept** и выбираем любую категорию. В полученной форме меняем значение параметра **category** на символы `'+OR+1=1--` --- ![](https://i.imgur.com/bzgWsOk.png) --- Отправляем форму и видим скрытые лбъекты на сайте --- ![](https://i.imgur.com/Q3i4j2t.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/6VtY8l8.png) --- ### Lab: SQL injection UNION attack, retrieving data from other tables Переходим в лабораторную работу. Включаем **intercept** и выбираем любую категорию. В полученной форме такой запрос, который подтверждает, что сайт возвращает два столбца с каким-то текстом --- ![](https://i.imgur.com/nBI95ar.png) --- Подтверждение получено --- ![](https://i.imgur.com/yeY1QOd.png) --- Меняем фору таким обрахом, чтобы сайт возвращал имена и пароли всех пользователей: `'+UNION+SELECT+username,+password+FROM+users--` --- ![](https://i.imgur.com/FmS8V23.png) --- Данные получены --- ![](https://i.imgur.com/VznkVKv.png) --- Проверяем их. Производим вход с данными **администратора** --- ![](https://i.imgur.com/YDlG70L.png) --- Доступ к аккаунту получен успешно --- ![](https://i.imgur.com/RM6vddA.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/2Kk3fVw.png) --- ### Lab: SQL injection attack, querying the database type and version on MySQL and Microsoft Переходим в лабораторную работу. Включаем **intercept** и выбираем любую категорию. В полученной форме такой запрос, который подтверждает, что сайт возвращает два столбца с каким-то текстом --- ![](https://i.imgur.com/DOFR98f.png) --- Подтверждение получено --- ![](https://i.imgur.com/oGY6b8m.png) --- Меняем фору таким обрахом, чтобы сайт возвращал данные о текущей версии базы данных: `'+UNION+SELECT+@@version,+NULL` --- ![](https://i.imgur.com/6ameIYe.png) --- Данные получены --- ![](https://i.imgur.com/684xnaP.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/XTcGP3B.png) --- ## **XSS уязвимости** **XSS** — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. ### Lab: Stored XSS into HTML context with nothing encoded Переходим в лабораторную работу. Переходим в блог. В комментарий вводим скрипт `<script>alert(1)</script>`. Указываем **имя** и **email**. Оставляем комментарий --- ![](https://i.imgur.com/D3PaVeU.png) --- Комментраий оставлен --- ![](https://i.imgur.com/4EQkMDM.png) --- Переходим обратно в блог. Скрипт выдал **alert** --- ![](https://i.imgur.com/cpFHI5X.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/te4LVPg.png) --- ### Lab: DOM XSS in document.write sink using source location.search Переходим в лабораторную работу. Вводим в поиске случайный набор символов --- ![](https://i.imgur.com/KmxZEFv.png) --- Выполняем поиск. Набор символов был помещён в `img src` --- ![](https://i.imgur.com/ZrA4il2.png) --- Снова выполним поиск, вставив alert-box в `img src` `"><svg onload=alert(1)>` --- ![](https://i.imgur.com/bdd9lWO.png) --- **Alert** сработал --- ![](https://i.imgur.com/44RrKM2.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/aSGc5GU.png) --- ### Lab: Reflected XSS into a JavaScript string with angle brackets HTML encoded Переходим в лабораторную работу. Вводим в поиске случайный набор символов --- ![](https://i.imgur.com/qs43ATR.png) --- Включаем **intercept** и отправляем результат в **repeater**. Там видим наш поисковой запрос --- ![](https://i.imgur.com/LchEdeJ.png) --- Вводим в поисковой запрос `-alert(1)-` в одинарных кавычках --- ![](https://i.imgur.com/IG0GjrQ.png) --- Скрипт сработал --- ![](https://i.imgur.com/Oi7AJac.png) --- ![](https://i.imgur.com/2K98tJ4.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/TH6f9nq.png) --- ### Lab: Reflected DOM XSS Переходим в лабораторную работу. Вводим в поиске `XXS` --- ![](https://i.imgur.com/twBoCtz.png) --- В `Burp` переходим в `HTTP-history`, где находим наш поисковой запрос через **GET** --- ![](https://i.imgur.com/TIrRRSm.png) --- Открываем *searchResult.js*. Видим, что для ответ JSON использует функцию *eval()* --- ![](https://i.imgur.com/qSQ0mWc.png) --- Возвращаемся к поиску. Введём следующий скрипт в запрос: `\"-alert(1)}//` --- ![](https://i.imgur.com/Ykc0eKO.png) --- **Алерт** сработал --- ![](https://i.imgur.com/xADDxps.png) --- ![](https://i.imgur.com/NeOj9yu.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/t9Q9WyX.png) --- ## **CSRF** **CSRF** — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер, осуществляющий некую вредоносную операцию. Для осуществления данной атаки жертва должна быть аутентифицирована на том сервере, на который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со стороны пользователя, которое не может быть проигнорировано или подделано атакующим скриптом. ### Lab: CSRF vulnerability with no defenses Переходим в лабораторную работу. Заходим в аккаунт, используя данные в условии логин и пароль `wiener: peter` --- ![](https://i.imgur.com/Z4oIiVf.png) --- Меняем адрес электронной почты --- ![](https://i.imgur.com/7w6K1GB.png) --- В `Burp` переходим в `HTTP-history`, где находим смену **email** через **POST**. Копируем URL --- ![](https://i.imgur.com/BgnJCgD.png) --- Переходим в режим `Go to exploit server`. Пишем скрипт-эксплойт для атаки. И отправляем его жертве --- ![](https://i.imgur.com/v3ME22Z.png) --- **Скрипт** сработал --- ![](https://i.imgur.com/dIIEysJ.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/oCpFcC3.png) --- ### Lab: CSRF where token validation depends on request method Переходим в лабораторную работу. Заходим в аккаунт, используя данные в условии **логин** и **пароль** `wiener: peter` --- ![](https://i.imgur.com/1DCtKgI.png) --- Меняем **адрес электронной почты** --- ![](https://i.imgur.com/vC6H8zj.png) --- В `Burp` переходим в `HTTP-history`, где находим смену **email** через **POST**. Копируем **URL**. Отправляем запрос в **repeater** --- ![](https://i.imgur.com/RQBL6LT.png) --- В **repeater** меняем параметр **csrf** на другой и отправляем запрос. Запрос блокируется --- ![](https://i.imgur.com/xjEPJON.png) --- Меняем метод запроса с **POST** на **GET**. Видим, что запрос не блокируется --- ![](https://i.imgur.com/ufgsAkI.png) --- Генерируем **скрипт-эксплойт** для атаки --- ![](https://i.imgur.com/yZYEd38.png) --- Корректируем и отправляем его жертве --- ![](https://i.imgur.com/PLc0ofk.png) --- **Скрипт** сработал --- ![](https://i.imgur.com/EVcSKSn.png) --- Адрес электронной почты *изменился* --- ![](https://i.imgur.com/zgK9FVN.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/hev4q7c.png) --- ## **SSRF** **SSRF** — это уязвимость веб-безопасности, которая позволяет злоумышленнику заставить приложение на стороне сервера отправлять запросы в непредусмотренное место. Злоумышленник может заставить сервер установить соединение с внутренними службами в инфраструктуре организации. В других случаях они могут заставить сервер подключаться к произвольным внешним системам, что может привести к утечке конфиденциальных данных, таких как учетные данные для авторизации. ### Lab: Basic SSRF against the local server Переходим в лабораторную работу. Проверим запас товара, нажав на соответствующую кнопку. Перед отправкой формы включаем **intercept** в **Burp Suite**. В запросе появляется строчка с параметром **stockApi** --- ![](https://i.imgur.com/58PunyX.png) --- Меняем параметр **stockApi** таким образом, чтобы у нас отобразился интерфейс администратора: `http://localhost/admin` --- ![](https://i.imgur.com/7MFAUwV.png) --- Отправляем форму. Видим, что у нас отобразился список пользователей сайта --- ![](https://i.imgur.com/i5xoyWE.png) --- Меняем параметр **stockApi** таким образом, чтобы удалить пользователя **carlos**: `http://localhost/admin/delete?username=carlos` --- ![](https://i.imgur.com/qXk3np6.png) --- Пользователь удалён --- ![](https://i.imgur.com/5JPhYkm.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/DiTFdqD.png) --- ### Lab: SSRF with filter bypass via open redirection vulnerability Переходим в лабораторную работу. Проверим запас товара, нажав на соответствующую кнопку. Перед отправкой формы включаем intercept в Burp Suite. В запросе появляется строчка с параметром stockApi --- ![](https://i.imgur.com/rlrzRHT.png) --- Меняем параметр **stockApi**, обратившись к **администратору**: `http://192.168.0.12:8080/admin` --- ![](https://i.imgur.com/ZbjHYKa.png) --- Получаем *ошибку* --- ![](https://i.imgur.com/VLZyrhq.png) --- Жмём на кнопку перехода на другой товар. В перехвате видим параметр **path** --- ![](https://i.imgur.com/oSpKLGr.png) --- Переходим на другую страницу --- ![](https://i.imgur.com/D9w7uKt.png) --- Изменяем параметр **stockApi**, изпользуя параметр **path** `/product/nextProduct?path=http://192.168.0.12:8080/admin` --- ![](https://i.imgur.com/q2AeTDR.png) --- Отправляем запрос и видим, что мы получили доступ к меню **администратора** --- ![](https://i.imgur.com/Qgc25WV.png) --- Меняем параметр **stockApi** таким образом, чтобы удалить пользователя **carlos**: `/product/nextProduct?path=http://192.168.0.12:8080/admin/delete?username=carlos` --- ![](https://i.imgur.com/94A72J3.png) --- Пользователь удалён --- ![](https://i.imgur.com/A6mfkdJ.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/E75Uc6T.png) --- ## **RCE** RCE – компьютерная уязвимость, при которой происходит удаленное выполнение кода на взламываемом компьютере. С помощью RCE злоумышленник сразу получает доступ к серверу атакуемого сайта, размещая на нем веб-шеллы, или любой другой вредоносный код. В практике встречались случаи, когда RCE эксплуатировали боевые скрипты, размещенные на хакерских серверах, которые отслеживали наличие вредоносной составляющей и вирусов шеллов на сайте. ### Lab: OS command injection, simple case Переходим в лабораторную работу. Открываем страницу любого товара --- ![](https://i.imgur.com/RCCg4Y0.png) --- Проверим запас товара, нажав на соответствующую кнопку. Перед отправкой формы включаем **intercept** в **Burp Suite**. Получаем доступ к параметру **storeID** --- ![](https://i.imgur.com/bNZFpnM.png) --- Заменяем параметр **storeID** так, чтобы получить имя текущего пользователя и отправляем запрос `3|whoami` --- ![](https://i.imgur.com/K1fAPfC.png) --- Получаем имя пользователя --- ![](https://i.imgur.com/tOxBZmp.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/helPfR9.png) --- ## **Path traversal** Path traversal - атака, которая позволяет злоумышленнику получать несанкционированный доступ к различным файлам и папкам системы. Как правило, такие атаки предполагают использование *dot-dot-slash* последовательностей (**relative path traversal**) или абсолютных путей вместо относительных (**absolute path traversal**). Для защиты необходимо применять различные способы валидации данных, получаемых от пользователя. ### Lab: File path traversal, simple case Переходим в лабораторную работу. Переходим в любой товар. Перед отправкой формы включаем **intercept** в **Burp Suite**. --- ![](https://i.imgur.com/48kcAhq.png) --- Наше внимание привлекает параметр filename --- ![](https://i.imgur.com/uOsJ2ji.png) --- Изменяем параметр **filename** на `../../../etc/passwd` и отправляем запрос --- ![](https://i.imgur.com/M5MFzXd.png) --- Заходим в **HTTP history**, где находим ответ. В ответе находится содержимое файла `/etc/passwd` --- ![](https://i.imgur.com/DY4xGhV.png) --- На сайте отображается пустое изображение --- ![](https://i.imgur.com/oJjKdWh.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/PDUpuoz.png) --- ### Lab: File path traversal, traversal sequences blocked with absolute path bypass Переходим в лабораторную работу. Переходим в любой товар. Перед отправкой формы включаем **intercept** в **Burp Suite**. --- ![](https://i.imgur.com/iESsWzG.png) --- Изменяем параметр **filename** на `/etc/passwd` --- ![](https://i.imgur.com/txhNVKm.png) --- Заходим в **HTTP history**, где находим ответ. В ответе находится содержимое файла `/etc/passwd` --- ![](https://i.imgur.com/uz68Wil.png) --- На сайте отображается пустое изображение --- ![](https://i.imgur.com/gZEd9vF.png) --- Лабораторная работа выполнена --- ![](https://i.imgur.com/DhIUiWJ.png) ---