Пентесты: готовим рабочее окружение для атаки
Веб-пентест — это специализированная процедура, в ходе которой специалисты по кибербезопасности активно ищут и эксплуатируют уязвимости веб-системы. Цель такой симулированной атаки — выявить слабые звенья системы безопасности, которые могут стать целью для настоящих атак.
Этот процесс аналогичен ситуации, когда банк нанимает эксперта для тестирования устойчивости своих систем. Задача эксперта — обойти системы безопасности и получить доступ к данным. Если ему это удаётся, банк получает ценную информацию, как эти системы усовершенствовать.
Авторы курса «Специалист по информационной безопасности» собрали рекомендации о том, как подготовить рабочее окружение для веб-пентеста.
В статье вы узнаете:
Какие юридические аспекты учитывать при проведении пентестов
Какой дистрибутив выбрать и как его установить
Какие инструменты установить и почему
Как перехватывать и модифицировать HTTP-запросы
Как настроить собственную лабораторию и начать исследовать уязвимости (практический пример)
Где узнать больше о кибербезопасности и пентестах
Юридические аспекты
Самый важный этап, с которого следует начать, — получить разрешение на проведение пентеста от владельца веб-ресурса. Проведение пентеста без разрешения может привести к судебным разбирательствам и штрафам.
Один из наиболее известных примеров — случай с Samy Kamkar и MySpace. Kamkar создал вирус, распространявшийся через социальную сеть MySpace, с целью исследования уязвимостей в системе безопасности платформы. Несмотря на то что его намерения были скорее исследовательскими, он всё равно подвергся юридическому преследованию.
Несанкционированный доступ к данным или их утечка могут стать причиной серьезных нарушений безопасности. Поэтому проведение пентеста с соблюдением всех юридических норм является не только законным требованием, но и стандартом отраслевой этики.
Выбор и установка дистрибутива
Выбор операционной системы для веб-пентеста — важный этап, влияющий на эффективность всего процесса. Правильный выбор ОС и инструментов может существенно ускорить тестирование и улучшить качество результатов.
Специализированные дистрибутивы предоставляют большой набор предустановленных инструментов, что экономит время на их установку и настройку. Рассмотрим наиболее популярные дистрибутивы для пентеста, а также возможность использования «чистых дистрибутивов».
Kali Linux: является отраслевым стандартом в области веб-пентеста и обязательной ОС для многих сертификационных экзаменов, например OSCP. Он предлагает более 600 предустановленных инструментов и регулярные обновления. Однако стоит отметить, что Kali может быть требователен к системным ресурсам и иметь проблемы со стабильностью.
Parrot Security: существует так же долго, как и Kali, хотя некоторые неправильно считают его новичком. Отличается превосходной производительностью, более широким набором инструментов и интуитивным пользовательским интерфейсом. Получает преимущество от модерируемых обновлений, которые проверяются на стабильность, делая его возможно более надёжным, чем Kali.
BlackArch: является одним из наиболее богатых на инструменты дистрибутивом. Он предлагает более 2000 утилит для различных задач пентеста. BlackArch нацелен на предоставление наиболее полного спектра инструментов, что делает его идеальным выбором для экспертов, которым требуется широкий арсенал. Однако эта широта выбора может быть избыточной для новичков или тех, кто предпочитает более узкоспециализированный набор инструментов.
Debian, Ubuntu и другие чистые дистрибутивы: эти операционные системы предоставляют отличную основу для тех, кто предпочитает полный контроль над используемыми инструментами и установленным программным обеспечением.
Пользователь сможет настроить систему под свои конкретные нужды, установив только те инструменты, которые действительно необходимы. Это может снизить нагрузку на системные ресурсы и увеличить производительность.
В отличие от специализированных дистрибутивов с предустановленными инструментами, первоначальная установка и поддержание системы могут занять значительно больше времени.
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 и криптографии.