---
# System prepended metadata

title: Untitled

---

**Отчёт по заданию 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)
