**Отчёт по заданию 3. Занятиe 3. “Основные атаки и паттерны.”.** Выполнил Бершауэр Владислав. Практическое задание: **Некоторые предворительные настройки.** Для некоторых заданий на платформе portswigger необходима утилита BurpSuite, а так же прокси. В первых работах использовалась версия Burp Suite Community Edition, но потом была скачена крякнутая версия Pro, для генерации html кода. Чтобы Burp Suite работал, нужен прокси. Я использовал расширение для google - *FoxyProxy*. ![](https://i.imgur.com/U6m8DRd.png) Для начала нужно добавить ip-address локального хоста, указанного в burp site в расширение: ![](https://i.imgur.com/t114go2.png) ![](https://i.imgur.com/Q1uEMyL.png) После этого нужно включить в расширении само подключение по этому ip, и тогда burp suite будет функционировать с сайтом: ![](https://i.imgur.com/mu53luY.png) Но это не так (конечно, можно проигнорировать это и зайти по незащищенному каналу): ![](https://i.imgur.com/wCTjq9H.png) В чем же дело? Дело в отсутствии должного сертификата безопасности. На кнопку "CA certificate" был скачен нужный сертификат. Поменял расширение через первый попавшийся преобразователь в интернете, потому что гугл не видел изначальное расширение .der. Поменял с .der до .p7b: ![](https://i.imgur.com/azPaWk0.png) Добавить сертификат можно через мастер, встроенный в браузер: ![](https://i.imgur.com/3D3gt5p.png) ![](https://i.imgur.com/fuOYFTX.png) После добавления сертификата, перезагрузки ОС, доступ был по защищенному каналу: ![](https://i.imgur.com/a1WUOGd.png) **SQL-injection уязвимости:** *Внедрение SQL-кода — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.* **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/kUr6Pm7.png) Включаем прокси и в бурпе нажимаем на intercept, это функция, позволяющая перехватить пакет и внести в него правки, после чего отправить на сайт: ![](https://i.imgur.com/NG6gkjG.png) Зайти в админа просто так мы не сможем: ![](https://i.imgur.com/zFCBs8M.png) ![](https://i.imgur.com/lJKELmn.png) Перехватив пакет данных, внесем правки: Добавим к administrator '-- ![](https://i.imgur.com/jBp4U4M.png) Не нажав кнопку Forward, то есть отправить пакет, сайт будет находится в состоянии ожидания: ![](https://i.imgur.com/PK6sn6U.png) После внесения правок зашли в аккаунт: ![](https://i.imgur.com/YmujA2L.png) s **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/2h9wj8I.png) В бурпе увидим запросы: ![](https://i.imgur.com/yACfa75.png) Включаем перехват пакетов, нажимаем на "корпоративные подарки" и меняем строчку в бурпе: ![](https://i.imgur.com/UGqvpIT.png) Включаем следующий параметр: ![](https://i.imgur.com/raT2qnj.png) Результат: ![](https://i.imgur.com/K8wT4fO.png) Смысл в извлечении скрытых данных, в данном случае информацию о выпущенных и не выпущенных продуктах. Если было 3, то стало значительно больше. Скриншот изначальных продуктов: ![](https://i.imgur.com/pTAUCYP.png) ![](https://i.imgur.com/BrMVeK1.png) **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/yoO5dxR.png) Перехват: ![](https://i.imgur.com/0gas2QB.png) Зайдем в эту категорию: ![](https://i.imgur.com/yzaf64y.png) Отправляем вывод программы в Repeater (фунция бурпа, позволяющая менять пакеты и смотреть результат в виде текста, набора команд, функций): ![](https://i.imgur.com/ObXDU7U.png) ![](https://i.imgur.com/XISg2A2.png) Добавим строчку для просмотра стобцов и текста сайта: ![](https://i.imgur.com/6nxa62j.png) ![](https://i.imgur.com/dVJ7UrJ.png) ![](https://i.imgur.com/NSvhBwM.png) ![](https://i.imgur.com/56IOS6g.png) ![](https://i.imgur.com/dbbEEex.png) Теперь введем запрос для получения информации о пользователях и их паролях: ![](https://i.imgur.com/ORTVC3f.png) Результат: ![](https://i.imgur.com/e82Wi4u.png) Зайдем в учетку админа: ![](https://i.imgur.com/yxPwSk5.png) ![](https://i.imgur.com/3T9PC6g.png) Результаты запроса возвращаются в ответе приложения, поэтому мы можем использовать атаку UNION для извлечения данных из других таблиц. **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/RtPTqGa.png) Отправляем вывод программы в репитор: ![](https://i.imgur.com/QviPfKf.png) ![](https://i.imgur.com/QOkH1PX.png) Если отправить пустой запрос, то мы не найдем версии базы данных MySQL: ![](https://i.imgur.com/SJxikfM.png) Внесем правки в код: ![](https://i.imgur.com/YuToaEL.png) Увидим версию: ![](https://i.imgur.com/UNe3sO8.png) ![](https://i.imgur.com/FpV5wiW.png) **XSS уязвимости:** XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. **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/4z30b3V.png) Напишем под любым постом комментарий со скриптом: ![](https://i.imgur.com/RepaoxF.png) ![](https://i.imgur.com/JkJ3oRM.png) ![](https://i.imgur.com/zvxSyas.png) Перезагрузим сайт и видим вывод: ![](https://i.imgur.com/ZKeQU9A.png) Судя по этому, код был успешно применен. ![](https://i.imgur.com/wlHODHJ.png) **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)) Введем рандомный поисковый запрос: ![](https://i.imgur.com/8mVi3qk.png) ![](https://i.imgur.com/dA53Y9w.png) Обратим внимание на то, что запрос помещается сюда: ![](https://i.imgur.com/leKdW5T.png) То есть, соответственно вредоносный код тоже будет в аналогичном месте кода. ![](https://i.imgur.com/eYA7Bzg.png) ![](https://i.imgur.com/lCx3nvM.png) Эта лабораторная работа содержит уязвимость межсайтового скриптинга на основе модели DOM в функции отслеживания поисковых запросов. Он использует функцию JavaScript document.write, которая записывает данные на страницу. Функция document.write вызывается с данными из location.search, которыми вы можете управлять с помощью URL-адреса веб-сайта. **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/l1W9Vnv.png) Включим перехват пакетов: ![](https://i.imgur.com/VlJ4h84.png) Введем любой поисковый запрос и отправим ответ программы в репитор: ![](https://i.imgur.com/2BwwP6M.png) ![](https://i.imgur.com/l7bowO4.png) Видим поисковый запрос в джава скрипте: ![](https://i.imgur.com/TWtfhfl.png) ![](https://i.imgur.com/ZBRkP3s.png) ![](https://i.imgur.com/SGFPUMB.png) ![](https://i.imgur.com/nSp4I98.png) Насколько я понял, ещё одно место помещения вредонсного кода. **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/g3IDpcP.png) Видим запрос GET с текстом запроса: ![](https://i.imgur.com/NmY15Bg.png) Увидим в searchResults.js функцию eval(). Описание eval() - функция глобального объекта. Аргумент функции eval() - строка. eval() исполняет содержащееся в строке выражение, один или несколько операторов JavaScript. ![](https://i.imgur.com/RWr9sCn.png) ![](https://i.imgur.com/4o5UkZU.png) ![](https://i.imgur.com/VMMk3fm.png) ![](https://i.imgur.com/f1AxNd8.png) Эта лабораторная работа демонстрирует отраженную уязвимость DOM. Уязвимости отраженной модели DOM возникают, когда приложение на стороне сервера обрабатывает данные из запроса и повторяет данные в ответе. Затем скрипт на странице обрабатывает отраженные данные небезопасным способом, в конечном итоге записывая их в опасный приемник. **CSRF:** CSRF (Cross-Site Request Forgery, также XSRF) – опаснейшая атака, которая приводит к тому, что хакер может выполнить на неподготовленном сайте массу различных действий от имени других, зарегистрированных посетителей. **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/KnDWBLh.png) Зайдем в аккаунт: ![](https://i.imgur.com/US5AH4q.png) ![](https://i.imgur.com/msDrZne.png) Обновим почту на абсолютно любую: ![](https://i.imgur.com/Ity0WI1.png) Увидим POST запрос с этим действием: ![](https://i.imgur.com/G7hzQbG.png) ![](https://i.imgur.com/45MNydM.png) Используем CSRF PoC на этом коде: ![](https://i.imgur.com/OkNUqez.png) Этот генератор позволяет сделать html код из кода запроса POST и ввести его на сайт. Введем html код следующим образом: ![](https://i.imgur.com/b9DJ9dQ.png) Получим результат: ![](https://i.imgur.com/VJvuZcm.png) ![](https://i.imgur.com/KVaiZ4D.png) **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/q7MlJoi.png) Зашли в аккаунт: ![](https://i.imgur.com/I6xH4ad.png) Сменили почту: ![](https://i.imgur.com/fZ7Ew5g.png) ![](https://i.imgur.com/YjCQ7FT.png) Видим POST запрос: ![](https://i.imgur.com/wTkSlWZ.png) Отправим в репитор: ![](https://i.imgur.com/MJH54d6.png) Попробуем изменить csrf токен: ![](https://i.imgur.com/c1Kd0ab.png) Функция изменения электронной почты в этой лаборатории уязвима для CSRF. Он пытается блокировать CSRF-атаки, но применяет защиту только к определенным типам запросов. Если изменить значение csrf параметра, запрос будет отклонен. Если преобразовать запрос в GET то ошибок не будет: ![](https://i.imgur.com/XEqDfV4.png) ![](https://i.imgur.com/JVPpygM.png) Изменили почту: ![](https://i.imgur.com/F0lDwx8.png) Сгененировали html код: ![](https://i.imgur.com/VcwUCmd.png) Введём его в "View exploit": ![](https://i.imgur.com/ebbxwCc.png) Результат: ![](https://i.imgur.com/rvR18Vd.png) ![](https://i.imgur.com/HuFehb1.png) В итоге на сайте существует защита от CSRF атак, но если изменить тип запроса то атака будет успешной. **SSRF:** SSRF – что это такое? Подделка запроса на стороне сервера – это атака, которая позволяет отправлять запросы от имени сервера к внешним или внутренним ресурсам. При этом злоумышленник может контролировать либо весь запрос целиком, либо его отдельные части (например, домен). **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/hVcZtW0.png) Выбрали любой товар: ![](https://i.imgur.com/1Cqp0Xq.png) Включили перехват: ![](https://i.imgur.com/RRc2Tb9.png) ![](https://i.imgur.com/mlwUqBu.png) Экспорт в репитор: ![](https://i.imgur.com/o0syWO9.png) http://localhost/admin позволяет отобразить интерфейс администрирования. Прочитаем HTML-код, чтобы определить URL-адрес для удаления целевого пользователя. После ввода данной команды в параметр stockApi пользователь carlos был удален: ![](https://i.imgur.com/76xZ34y.png) **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/p81ZiQg.png) Выберем любой товар: ![](https://i.imgur.com/lcF1gbO.png) ![](https://i.imgur.com/UhD7y11.png) Репитор: ![](https://i.imgur.com/cEJ09js.png) Попробуем изменить stockApi параметр и обратите внимание, что невозможно заставить сервер отправить запрос напрямую другому хосту. ![](https://i.imgur.com/ZLht2CJ.png) Создадим URL-адрес, который использует открытую уязвимость перенаправления и перенаправляет на интерфейс администратора, и введем его в stockApi параметр: ![](https://i.imgur.com/WwXummg.png) Результат: ![](https://i.imgur.com/3FkyujF.png) Введя эту команду пользователь carlos будет удалён: ![](https://i.imgur.com/4a07qmj.png) ![](https://i.imgur.com/lu0VWv9.png) **RCE:** RCE (Удаленное выполнение кода) - один из самых опасных типов компьютерных уязвимостей. Его эксплуатация позволяет дистанционно запустить вредоносный код в рамках целевой системы по локальной сети или через интернет. Физического доступа злоумышленника к устройству не требуется. В результате эксплуатации RCE-уязвимости взломщик может перехватить управление системой или ее отдельными компонентами, а также украсть конфиденциальные данные. **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/YX67yGm.png) ![](https://i.imgur.com/FNu2t2I.png) Захватим пакет: ![](https://i.imgur.com/8VA5uXA.png) ![](https://i.imgur.com/F4hkCac.png) Приложение выполняет команду оболочки, содержащую предоставленные пользователем идентификаторы продуктов и магазинов, и возвращает необработанные выходные данные команды в своем ответе. Узнаем под каким пользователем происходит сеанс на сайте: ![](https://i.imgur.com/0GyuDfP.png) ![](https://i.imgur.com/JgjqrLP.png) ![](https://i.imgur.com/vjszLi2.png) **Path traversal:** Атаки типа path traversal позволяют злоумышленнику получать несанкционированный доступ к различным файлам и папкам системы. Как правило, path traversal атаки, известные также как directory traversal, позволяют злоумышленнику работать с файлами и папками, к которым в обычном случае у него не должно быть доступа. **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/MtJss0T.png) Включим функцию Intercept Server Responses (в переводе - перехватить ответ сервера): ![](https://i.imgur.com/11N2Vt8.png) ![](https://i.imgur.com/gdSYOC9.png) Нажмем на любой рисунок: ![](https://i.imgur.com/kIttyE6.png) Увидим пакет с наименованием рисунка (48.jpg): ![](https://i.imgur.com/vu6okKP.png) Изменим параметр filename: ![](https://i.imgur.com/n7LPrba.png) Теперь отправим данные на сайт и посмотрим измененный запрос GET: ![](https://i.imgur.com/KAQ0IUR.png) ![](https://i.imgur.com/W4OXS2Y.png) Наблюдаем директории. ![](https://i.imgur.com/iYH65Y3.png) **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/QEEkVVX.png) Перехват пакетов: ![](https://i.imgur.com/vxkpc4U.png) Изменим параметр filename: ![](https://i.imgur.com/YTVtT93.png) ![](https://i.imgur.com/9OEKJnS.png) Cнова увидим каталоги: ![](https://i.imgur.com/UyzECGK.png) Приложение блокирует последовательности обхода, но обрабатывает предоставленное имя файла как относящееся к рабочему каталогу по умолчанию. **Общая статистика:** ![](https://i.imgur.com/fyaokty.png) ![](https://i.imgur.com/BLywVs5.png) ![](https://i.imgur.com/TidAqJ1.png) ![](https://i.imgur.com/S0EhT8w.png) ![](https://i.imgur.com/CAWhg75.png) ![](https://i.imgur.com/p7TzAYH.png) ![](https://i.imgur.com/CQnkLMf.png) ![](https://i.imgur.com/CvCSRio.png) ![](https://i.imgur.com/GD0Jp8h.png)