Пентесты: готовим рабочее окружение для атаки

от автора

Веб-пентест — это специализированная процедура, в ходе которой специалисты по кибербезопасности активно ищут и эксплуатируют уязвимости веб-системы. Цель такой симулированной атаки — выявить слабые звенья системы безопасности, которые могут стать целью для настоящих атак. 

Этот процесс аналогичен ситуации, когда банк нанимает эксперта для тестирования устойчивости своих систем. Задача эксперта — обойти системы безопасности и получить доступ к данным. Если ему это удаётся, банк получает ценную информацию, как эти системы усовершенствовать.

Авторы курса «Специалист по информационной безопасности» собрали рекомендации о том, как подготовить рабочее окружение для веб-пентеста.

В статье вы узнаете:

  • Какие юридические аспекты учитывать при проведении пентестов

  • Какой дистрибутив выбрать и как его установить

  • Какие инструменты установить и почему

  • Как перехватывать и модифицировать HTTP-запросы

  • Как настроить собственную лабораторию и начать исследовать уязвимости (практический пример)

  • Где узнать больше о кибербезопасности и пентестах

Юридические аспекты 

Самый важный этап, с которого следует начать, — получить разрешение на проведение пентеста от владельца веб-ресурса. Проведение пентеста без разрешения может привести к судебным разбирательствам и штрафам.

Один из наиболее известных примеров — случай с Samy Kamkar и MySpace. Kamkar создал вирус, распространявшийся через социальную сеть MySpace, с целью исследования уязвимостей в системе безопасности платформы. Несмотря на то что его намерения были скорее исследовательскими, он всё равно подвергся юридическому преследованию.

Несанкционированный доступ к данным или их утечка могут стать причиной серьезных нарушений безопасности. Поэтому проведение пентеста с соблюдением всех юридических норм является не только законным требованием, но и стандартом отраслевой этики.

Выбор и установка дистрибутива 

Выбор операционной системы для веб-пентеста — важный этап, влияющий на эффективность всего процесса. Правильный выбор ОС и инструментов может существенно ускорить тестирование и улучшить качество результатов. 

Специализированные дистрибутивы предоставляют большой набор предустановленных инструментов, что экономит время на их установку и настройку. Рассмотрим наиболее популярные дистрибутивы для пентеста, а также возможность использования «чистых дистрибутивов».

Kali Linux: является отраслевым стандартом в области веб-пентеста и обязательной ОС для многих сертификационных экзаменов, например официальный сайт Kali Linux. В этой статье все примеры будут основаны на этом дистрибутиве.

Сфера веб-пентеста постоянно эволюционирует, поэтому советую регулярно проверять актуальность инструментов в Kali. Для этого используйте инструмент pdtm, который позволит определить, какие дополнительные инструменты могут потребоваться.

Установка ключевых инструментов для веб-пентеста

Выбор инструментов для веб-пентеста определяется набором задач и требований к безопасности. Основную эффективность обеспечивают три ключевых инструмента, в то время как дополнительные консольные утилиты и прочие инструменты служат для более узкоспециализированных задач.

Браузер: это ваш главный инструмент для ручного анализа. Firefox и Chrome часто выбираются из-за их гибкости и поддержки расширений, полезных для тестирования безопасности.

Burp Suite: это наш второй главный инструмент. Burp Suite является де-факто стандартом в индустрии веб-пентеста и может считаться швейцарским ножом веб-пентестера. Этот инструмент предоставляет глубокие возможности для анализа и манипуляции HTTP-трафиком, исследования уязвимостей и автоматизации рутинных задач. В Kali Linux он уже предустановлен в виде Community Edition, а пользователи других дистрибутивов могут скачать Burp Suite отдельно.

IDE (интегрированная среда разработки): это наш третий ключевой инструмент. В зависимости от применяемого языка программирования и специфических задач веб-пентеста выбор может пасть на Visual Studio Code, PyCharm или другую интегрированную среду разработки. Эти IDE не только оптимизируют процесс разработки, но и предоставляют комплексный инструментарий для разработки, модификации и отладки эксплойтов, скриптов автоматизации и других узкоспециализированных утилит.

Opensource-инструменты для веб-пентеста: среди них особо выделяются решения от ProjectDiscovery. Эти инструменты являются ценным дополнением к стандартному набору утилит в Kali Linux, предоставляя ряд консольных инструментов для специализированных задач. Они не только повышают глубину анализа в рамках веб-пентеста, но и предлагают функции для сканирования портов, фаззинга, исследования уязвимостей и других узкоспециализированных задач.

Перехват и анализ HTTP-запросов с использованием Burp Suite

Burp Suite является фундаментальным инструментом в арсенале веб-пентестера. Рассмотрим базовые методы перехвата трафика для дальнейшего анализа и выявления уязвимостей в тестовой лаборатории.

Активация перехвата: откройте Burp Suite и перейдите на вкладку Proxy > Intercept. Далее нажмите на Intercept is off, чтобы включить режим перехвата. Статус изменится на Intercept is on. Выглядеть это будет так:

Инициация HTTP-запроса: используя браузер, интегрированный с Burp Suite, перейдите на https://ya.ru/ Обратите внимание, что загрузка страницы приостановлена. Это произошло потому, что Burp Suite перехватил исходящий HTTP-запрос.

Анализ запроса: вернитесь в Burp Suite и нажмите Forward, чтобы разрешить перехваченный запрос. 

Деактивация перехвата: нажмите снова на Intercept is on, чтобы деактивировать перехват. 

Просмотр истории трафика: перейдите на вкладку Proxy > HTTP history для просмотра истории перехваченных запросов. 

Продвинутый перехват и модификация запросов на примере ya.ru 

Подготовка: запустите Burp Suite и перейдите на вкладку Proxy > Intercept. Убедитесь, что перехват выключен — Intercept is off, после чего откройте браузер и перейдите на сайт ya.ru

Инициация и перехват запроса: включите перехват в Burp Suite — Intercept is on — и обновите страницу ya.ru

Анализ запроса: изучите перехваченный запрос и определите, какие параметры можно модифицировать. В перехваченном запросе к сайту ya.ru, например, вы увидите строку URL вида «GET/search/?text=climate+change&lr=213&suggest_reqid=...«. Здесь параметр text=hello является одним из параметров, который можно изменить. 

Модификация запроса: измените один из параметров запроса и нажмите Forward. В случае с примером выше вы можете изменить параметр text=climate+change на text=quantum+computing и отправить модифицированный запрос. После этого в браузере отобразится изменённый поисковый запрос quantum computing.

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

Этот простой эксперимент подчеркивает роль Burp Suite как промежуточного звена между вашим браузером и целевым сервером. С его помощью можно не только перехватить запросы, но и изменить их перед отправкой на сервер. Это работает не только с GET-запросами, как в нашем примере, но и с POST-запросами, что расширяет возможности анализа. В сценариях, требующих выявления уязвимостей, такая функциональность может быть неоценимой. В будущих уроках мы более подробно рассмотрим, как можно использовать этот инструмент для выявления и эксплуатации уязвимостей. 

Конфигурация виртуальной среды в VirtualBox с Kali Linux

Веб-пентест надёжно и эффективно осуществляется в окружении, разработанном с учётом специфики тестирования. Примечательным инструментом для этого является виртуальная машина с Kali Linux, запущенная на платформе VirtualBox. 

Давайте по пунктам рассмотрим, как создать оптимизированную виртуальную среду:

Включение двунаправленного общего буфера обмена: в настройках VirtualBox перейдите в раздел «Устройства» и активируйте опцию «Общий буфер обмена». Это позволит копировать и вставлять текст и файлы между хостовой системой и виртуальной машиной. Благодаря этому передача команд, результатов анализа или кода станет быстрее и удобнее.

Активация drag-and-drop: в том же разделе включите функцию drag-and-drop для возможности перетаскивания файлов между хостовой и виртуальной системами Это экономит время и упрощает работу с различными инструментами и данными в процессе тестирования.

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

Оптимизация технических параметров: обратите внимание на следующие моменты, чтобы пентестинг проходил легче и быстрее:

  • Настройка сетевого адаптера в режиме моста. Конфигурация позволяет виртуальной машине находиться в одной локальной сети с хостовой машиной, что упрощает процесс тестирования сетевых уязвимостей.

  • Выделение ОЗУ и процессорных ядер. Выделение адекватного объема оперативной памяти и процессорных ресурсов позволяет обеспечить высокую производительность во время тестирования. Для оптимальной производительности в веб-пентестинге рекомендется выделять минимум 4 ГБ оперативной памяти и не менее двух процессорных ядер, в зависимости от возможностей физического оборудования.

  • Использование SSD для хранения виртуальной машины. Сократит время загрузки и ускорит выполнение операций, связанных с дисковым вводом-выводом. Для достижения максимальной скорости операций и общей производительности системы рекомендуется выделить не менее 100 ГБ на SSD или HDD.

Практика: эксплуатация уязвимостей в Juicy Shop

Практические лаборатории — ключевой элемент для обучения веб-пентесту. Настроенные уязвимые стенды предлагают реалистичные сценарии для анализа и эксплуатации уязвимостей. Давайте рассмотрим, как настроить собственную лабораторию и начать исследовать уязвимости, на примере Juicy Shop от OWASP.

Первичная проверка: цель первого этапа — определить, насколько хорошо защищена платформа Juicy Shop от самых базовых атак. Пробуем войти в аккаунт администратора, используя самые тривиальные учётные данные — логин и пароль admin/admin. 

Как и ожидается, платформа нас не пропускает. Это намекает на то, что простых путей для эксплуатации не будет.

Использование Burp Suite для перехвата запроса: теперь наша цель — найти HTTP-запрос, который отвечает за передачу учётных данных на сервер.

После перехвата запроса мы модифицируем его, вставляя классический SQL Injection паттерн. Для детального анализа и модификации HTTP-запросов используем компонент Repeater в Burp Suite. Repeater позволяет изменять и повторно отправлять запросы для динамического анализа ответов сервера.

Эксплуатация SQL Injection: у нас есть перехваченный запрос, мы вставляем в него строку «' or 1=1--«. Эта конструкция позволяет обойти процесс аутентификации, передав SQL-серверу команду, которая всегда возвращает истину. Затем отправляем модифицированный запрос обратно на сервер.

Если всё выполнено корректно, получаем доступ к аккаунту администратора. Это подтверждает наличие SQL Injection уязвимости и демонстрирует, как даже сложные системы могут подвергаться базовым видам атак, если их не настроить правильно.

Давайте теперь разберёмся, как так получилось. Причина успешной авторизации с использованием строки «' or 1=1--« заключается в том, как интерпретируется SQL-запрос на стороне сервера. 

Обычно система формирует SQL-запрос для проверки учётных данных следующим образом:

SELECT * FROM users WHERE username = 'ВВЕДЕННЫЙ_ЛОГИН' AND password = 'ВВЕДЕННЫЙ_ПАРОЛЬ';

Когда мы вводим в поле логина строку «' or 1=1--«, итоговый SQL-запрос примет вид:

SELECT * FROM users WHERE username = '"' or 1=1--"' AND password = 'ВВЕДЕННЫЙ_ПАРОЛЬ';

Здесь последовательность является комментарием, который эффективно закомментирует оставшуюся часть запроса. Таким образом, запрос фактически становится:

SELECT * FROM users WHERE username = '"' or 1=1

Этот запрос всегда возвращает истину (1=1), что позволяет обойти процесс аутентификации. Система считает, что условие выполнено, и предоставляет доступ к аккаунту администратора.

Выбор платформы для дальнейшей практики

bWAPP: обладает широким спектром уязвимостей и рекомендуется для тех, кто стремится охватить разнообразные аспекты веб-безопасности. 

DVWA: сосредоточен на ключевых уязвимостях, подходит для новичков. 

Juicy Shop от OWASP: современное веб-приложение, которое намеренно содержит ряд уязвимостей. Особенно полезно для тех, кто уже знаком с основами и хочет углубиться в поиск уязвимостей.

Заключение

Основная трудность веб-пентеста не в азах или теоретических знаниях; истинная сложность заключается в непрерывном следовании за актуальными угрозами и новыми уязвимостями. Постоянное обновление информации и регулярная практика — ключевые факторы для успешной карьеры в данной области.

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

Всем, кому интересно узнать больше по теме, советую следующие ресурсы:

Web Hacking 101: обзор базовых понятий и техник веб-хакинга, идеально подходит для новичков.

The Web Application Hacker’s Handbook: Discovering and Exploiting Security Flaws: комплексный ресурс для изучения методов обнаружения и эксплуатации уязвимостей.

Mastering Modern Web Penetration Testing: продвинутый ресурс, фокусирующийся на современных методиках и техниках.


Курс «Специалист по информационной безопасности»: будете практиковаться в облаке Яндекса в формате CTF и научитесь тестировать веб-приложения на уязвимости и защищать их, а также пройдёте 60-часовой модуль по основам безопасного кода. Курс поможет лучше понимать инфраструктуру приложений и писать устойчивый к атакам код. Часть обучения проходит в игровом формате: студенты будут делиться на команды нападающих — тех, кто пытается взломать код — и защищающихся. Каждый студент получит в подарок мини-курс по основам сетей, вёрстке, API и криптографии.


ссылка на оригинал статьи https://habr.com/ru/articles/770668/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *