Эта методология — всего лишь набор рекомендаций индустрии безопасности о том, как должно проводиться тестирование. Существуют некоторые устоявшиеся и хорошо известные методологии и стандарты, которые могут быть использованы для пентеста, но поскольку для каждого веб-приложения необходимо проводить различные виды тестов, тестировщики могут создать свои собственные, обратившись к стандартам, доступным на рынке.
Ниже перечислены некоторые методологии и стандарты тестирования безопасности:
- OWASP (Открытый проект по безопасности веб-приложений);
- OSSTMM (Руководство по методологии тестирования безопасности с открытым исходным кодом);
- PTF;
- ISSAF;
- PCI DSS (Стандарт безопасности данных индустрии платежных карт).
Ниже перечислены некоторые тестовые сценарии, которые могут быть проверены в рамках тестирования на проникновение в веб-приложения (WAPT):
- Межсайтовый скриптинг (CSS, Cross Site Scripting);
- Инъекция SQL (SQL Injection);
- Нарушенная аутентификация и управление сеансами;
- Недостатки загрузки файлов;
- Атаки на кэширующие серверы;
- Неправильная конфигурация системы безопасности;
- Подделка межсайтовых запросов;
- Взлом паролей.
Пентестеры не должны слепо следовать упомянутым методам, важно рассматривать каждый случай индивидуально.
Пример
Предположим, что вас попросили провести глубокое тестирование сайта электронной коммерции. Теперь подумайте, сможете ли вы использовать традиционные методы OWASP (например, XSS, SQL-инъекции и т.д.) для выявления всех уязвимостей на сайте?
Ответ — нет, поскольку электронная коммерция работает на совершенно другой платформе и технологии по сравнению с другими веб-сайтами. Чтобы сделать тестирование на проникновение сайтов электронной коммерции эффективным, тестировщики должны разработать подход, включающий такие дополнения, как управление заказами, управление купонами и вознаграждениями, интеграция платежных шлюзов и интеграция системы управления контентом. Поэтому, прежде чем выбрать подход, убедитесь в том, что подход поможет найти самые большие уязвимости.
Виды WEB-тестирования на проникновение
Веб-приложения можно тестировать на проникновение двумя способами. Тесты могут быть разработаны для имитации внутренних или внешних атак.
#1) Внутреннее тестирование на проникновение
Внутренний пентест проводится внутри организации по внутренней сети (например, внутренней локальной сети), поэтому оно включает в себя тестирование веб-приложений, размещенных во внутренней сети. Это помогает обнаружить наличие уязвимостей в корпоративном брандмауэре. Многие считают, что атаки могут происходить только извне, и очень часто внутреннее тестирование на проникновение упускается из виду или ему не уделяется много внимания. В основном сюда входят злонамеренные атаки недовольных сотрудников или подрядчиков, которые могли уволиться, но знают внутренние политики безопасности и пароли.
#2) Внешнее тестирование на проникновение
Эти атаки осуществляются за пределами организации и включают в себя тестирование веб-приложений, размещенных в Интернете. Тестировщики ведут себя как хакеры, которые менее осведомлены о внутренних системах. Для имитации таких атак тестировщикам предоставляется IP-адрес целевой системы без предоставления какой-либо другой информации. Им необходимо провести поиск и сканирование общедоступных веб-страниц и найти информацию о целевом узле, а затем скомпрометировать найденный узел. В основном этот вид пентестинга состоит из тестирования сервера, брандмауэра и IDS.
Методология тестирования на проникновение в WEB
Нужно ли проводить пентест вручную или можно просто автоматизировать его? Многие задумываются об автоматических тестах, так как это дешевле и быстрее.
Да, это действительно так, потому что автоматизация обеспечивает скорость, предотвращение ошибок, допускаемых при ручном тестировании, и ряд других преимуществ. Но в том, что касается тестирования на проникновение, автоматизация проигрывает. Ручное тестирование помогает найти уязвимости, связанные с бизнес-логикой, и исследует те части системы, которые неспособна оценить программа. Автоматизация полезна, но она не заменит пентестера.
Ниже перечислены некоторые из инструментов, доступных для пентеста:
- nmap;
- Hydra;
- Nessus;
- Nikto;
- ZAP;
- Metasploit;
- Burp Suite.
Тестирование на проникновение может помочь создать безопасное программное обеспечение для вашего бизнеса.
5 этапов тестирования
Процесс тестирования на проникновение можно упрощенно разделить на пять этапов
- Сниффинг (sniffing) — акт сбора важной информации о целевой системе. Эта информация может быть использована для более эффективной атаки на цель. Например, поисковые системы с открытым исходным кодом можно использовать для поиска данных, которые могут быть использованы для атак социальной инженерии.
- Использование технических средств для дальнейшего расширения знаний злоумышленника о системе.
- Используя данные, собранные на этапах разведки (сниффинга) и сканирования, злоумышленники могут эксплуатировать целевую систему.
- Проверка длительности того, сколько злоумышленник сможет собирать данные и наносить вред, оставаясь в системе.
- Злоумышленник должен удалить все следы, компрометирующие его.
После того как злоумышленник воспользовался уязвимостью, он может получить доступ к другим машинам, и процесс повторяется, т.е. поиск новых уязвимостей и попытка их использования.