**Отчёт по заданию 3.
Занятиe 3. “Основные атаки и паттерны.”.**
Выполнил Бершауэр Владислав.
Практическое задание:
**Некоторые предворительные настройки.**
Для некоторых заданий на платформе portswigger необходима утилита BurpSuite, а так же прокси.
В первых работах использовалась версия Burp Suite Community Edition, но потом была скачена крякнутая версия Pro, для генерации html кода.
Чтобы Burp Suite работал, нужен прокси. Я использовал расширение для google - *FoxyProxy*.

Для начала нужно добавить ip-address локального хоста, указанного в burp site в расширение:


После этого нужно включить в расширении само подключение по этому ip, и тогда burp suite будет функционировать с сайтом:

Но это не так (конечно, можно проигнорировать это и зайти по незащищенному каналу):

В чем же дело? Дело в отсутствии должного сертификата безопасности.
На кнопку "CA certificate" был скачен нужный сертификат. Поменял расширение через первый попавшийся преобразователь в интернете, потому что гугл не видел изначальное расширение .der. Поменял с .der до .p7b:

Добавить сертификат можно через мастер, встроенный в браузер:


После добавления сертификата, перезагрузки ОС, доступ был по защищенному каналу:

**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))
Смысл атаки в обходе системы, позволяющей зайти в аккаунт администратора.
Страничка изначально:

Включаем прокси и в бурпе нажимаем на intercept, это функция, позволяющая перехватить пакет и внести в него правки, после чего отправить на сайт:

Зайти в админа просто так мы не сможем:


Перехватив пакет данных, внесем правки:
Добавим к administrator '--

Не нажав кнопку Forward, то есть отправить пакет, сайт будет находится в состоянии ожидания:

После внесения правок зашли в аккаунт:

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))
Изначальная страничка:

В бурпе увидим запросы:

Включаем перехват пакетов, нажимаем на "корпоративные подарки" и меняем строчку в бурпе:

Включаем следующий параметр:

Результат:

Смысл в извлечении скрытых данных, в данном случае информацию о выпущенных и не выпущенных продуктах.
Если было 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))
Прокси:

Перехват:

Зайдем в эту категорию:

Отправляем вывод программы в Repeater (фунция бурпа, позволяющая менять пакеты и смотреть результат в виде текста, набора команд, функций):


Добавим строчку для просмотра стобцов и текста сайта:





Теперь введем запрос для получения информации о пользователях и их паролях:

Результат:

Зайдем в учетку админа:


Результаты запроса возвращаются в ответе приложения, поэтому мы можем использовать атаку 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))
Начало работы:

Отправляем вывод программы в репитор:


Если отправить пустой запрос, то мы не найдем версии базы данных MySQL:

Внесем правки в код:

Увидим версию:


**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))
Начало работы:

Напишем под любым постом комментарий со скриптом:



Перезагрузим сайт и видим вывод:

Судя по этому, код был успешно применен.

**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))
Введем рандомный поисковый запрос:


Обратим внимание на то, что запрос помещается сюда:

То есть, соответственно вредоносный код тоже будет в аналогичном месте кода.


Эта лабораторная работа содержит уязвимость межсайтового скриптинга на основе модели 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))
Страничка:

Включим перехват пакетов:

Введем любой поисковый запрос и отправим ответ программы в репитор:


Видим поисковый запрос в джава скрипте:




Насколько я понял, ещё одно место помещения вредонсного кода.
**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))
Введем так же рандомный запрос:

Видим запрос GET с текстом запроса:

Увидим в searchResults.js функцию eval(). Описание eval() - функция глобального объекта. Аргумент функции eval() - строка. eval() исполняет содержащееся в строке выражение, один или несколько операторов JavaScript.




Эта лабораторная работа демонстрирует отраженную уязвимость 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))

Зайдем в аккаунт:


Обновим почту на абсолютно любую:

Увидим POST запрос с этим действием:


Используем CSRF PoC на этом коде:

Этот генератор позволяет сделать html код из кода запроса POST и ввести его на сайт.
Введем html код следующим образом:

Получим результат:


**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))

Зашли в аккаунт:

Сменили почту:


Видим POST запрос:

Отправим в репитор:

Попробуем изменить csrf токен:

Функция изменения электронной почты в этой лаборатории уязвима для CSRF. Он пытается блокировать CSRF-атаки, но применяет защиту только к определенным типам запросов.
Если изменить значение csrf параметра, запрос будет отклонен.
Если преобразовать запрос в GET то ошибок не будет:


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

Сгененировали html код:

Введём его в "View exploit":

Результат:


В итоге на сайте существует защита от 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))

Выбрали любой товар:

Включили перехват:


Экспорт в репитор:

http://localhost/admin позволяет отобразить интерфейс администрирования.
Прочитаем HTML-код, чтобы определить URL-адрес для удаления целевого пользователя.
После ввода данной команды в параметр stockApi пользователь carlos был удален:

**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 параметр и обратите внимание, что невозможно заставить сервер отправить запрос напрямую другому хосту.

Создадим URL-адрес, который использует открытую уязвимость перенаправления и перенаправляет на интерфейс администратора, и введем его в stockApi параметр:

Результат:

Введя эту команду пользователь carlos будет удалён:


**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))


Захватим пакет:


Приложение выполняет команду оболочки, содержащую предоставленные пользователем идентификаторы продуктов и магазинов, и возвращает необработанные выходные данные команды в своем ответе.
Узнаем под каким пользователем происходит сеанс на сайте:



**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))

Включим функцию Intercept Server Responses (в переводе - перехватить ответ сервера):


Нажмем на любой рисунок:

Увидим пакет с наименованием рисунка (48.jpg):

Изменим параметр filename:

Теперь отправим данные на сайт и посмотрим измененный запрос GET:


Наблюдаем директории.

**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:


Cнова увидим каталоги:

Приложение блокирует последовательности обхода, но обрабатывает предоставленное имя файла как относящееся к рабочему каталогу по умолчанию.
**Общая статистика:**








