Тест на проникновение - необходимость?
70% сайтов имеют уязвимости высокой степени риска, которые приводят к компрометации ресурса и утечки данных.
Penetration test (сокр. pentest) или тест на проникновение - моделирование действий хакера на сайт, с целью получения абсолютно объективной оценки текущего уровня информационной безопасности исследуемого ресурса.
Выполнение данных работ позволяет разработать адекватную и всеобъемлющую программу мероприятий по повышению уровня защищенности веб-приложения, что в свою очередь приводит к снижению операционных, финансовых и репутационных рисков до приемлемого уровня. Проще говоря, это конечный логический этап при разработке вашего сайта, если вы действительно всерьез задумались о безопасности.
Зачем проводить тест на проникновение?
Проведения теста на проникновения решает в первую очередь следующие задачи:
- выявление недостатков в применяемых клиентом мерах информационной безопасности и оценка возможности их использования нарушителем
- практическая демонстрация возможности использования уязвимостей (на примере наиболее критических)
- получение на основе объективных свидетельств комплексной оценки текущего уровня защищенности веб-приложения
- выработка рекомендаций по устранению выявленных уязвимостей и недостатков с целью повышения уровня защищенности веб-приложения
В большинстве случаев тестирование проходит методом черного ящик (black box).
При таком методе используется следующая модель нарушителя: высококвалифицированный внешний нарушитель (уровень квалификации - хакер), действующий со стороны сети Интернет, не имеющий никаких привилегий и не обладающий никакими данными об исследуемом ресурсе, осуществляющий атаки, направленные на получение несанкционированного доступа к веб-приложению. Единственная информация, которой владеет исполнитель – адрес сайта.
При проведении теста на проникновение используются общепризнанные стандарты и руководства по обеспечению информационной безопасности, такие как:
- OWASP Testing Guide
- OWASP Top10
- Web Application Security Consortium Threat (WASC) Classification
- Стандарты серии ISO 17799/27000
Проведение работ можно логически разбить на следующие этапы:
1. Сбор и анализ информации
2. Идентификация уязвимостей
3. Реализация атаки на веб-приложение
4. Анализ и составление отчета
5. Устранение уязвимостей
Сбор и анализ информации.
На данном этапе производится сканирование портов исследуемого ресурса, а также идентификация доступных сервисов, служб, средств защиты.
Идентификация уязвимостей.
Сбор и анализ информации об имеющихся уязвимостях в обнаруженных версиях служб, сервисов, скриптах. Выявление способов использования уязвимостей, оценка рисков использования уязвимостей. Тестирование уязвимостей OWASP Top10 (https://www.owasp.org). Анализ и тестирование логики веб-приложений, проверка возможности раскрытияе чувствительных данных, тестирование механизмов проверки входных данных (SQL Injection, XML Injection, XSS, Code Injection, B/H/S overflows) и т.д.
Реализация атаки на веб-приложение.
Проверка выполнение произвольного кода на стороне сервера, получение прав на чтение или запись файлов/бд на сервере, доступ к приватной информации и т.д.
Анализ и составление отчетов.
Здесь происходит объединение и упорядочивание информации, полученной в процессе тестирования. Составляется отчет, который содержит : обзорный отчет, отчет об обнаруженных уязвимостях, вывод о состоянии информационной безопасности исследуемого ресурса и план по устранению выявленных уязвимостей.
Как должен выглядеть список проверок и тестов?
В качестве приоритетных векторов атак, для проверки их реализуемости в отношении сценариев веб-приложения используются нижеперечисленные группы тестов и проверок:
1. Abuse of Functionality. Злоупотребление функциональными возможностями. Использование функций веб-приложения с целью обхода механизмов разграничение доступа.
2. Brute Force. Перебор паролей по словарям простых и стандартных паролей.
3. Directory Indexing Поиск листинга директорий.
4. Content Spoofing.Подмена содержания сайта. отображение удаленного
содержания под видом локального. (fopen\iframe)
5. Credential/Session Prediction.Предсказуемое значение идентификатора
сессии позволяет перехватывать сессии других пользователей. Подобные атаки
выполняются путем предсказания или угадывания уникального идентификатора
сессии пользователя.
6. CrossSite Scripting. Атака на вебприложение, заключающиеся во внедрении
в выдаваемую веб-системой страницу вредоносного кода (который будет
выполнен на компьютере пользователя при открытии им этой страницы) и
взаимодействии этого кода с веб-сервером злоумышленника.
7. CrossSite Request Forgery. Подделка межсайтовых запросов. Атака на
посетителей вебсайта, использующая недостатки протокола HTTP.
8. HTTP Response Smuggling. Атаки, основанные на некорректной передачи
ответов HTTP.
9. HTTP Response Splitting. Атаки с разделением ответов HTTP.
10. HTTP Request Smuggling. Атаки некорректной передачи запросов HTTP.
11. HTTP Request Splitting. Атаки с разделением запросов HTTP.
12. LDAP Injection. Внедрение операторов LDAP атака на веб-сервер,
создающаю запросы к службе LDAP на основе данных, вводимых
пользователем.
13. Null Byte Injection. Обход проверки фильтра веб-инфраструктуры, путем
добавления в url символа нулевого байта, с целью изменения логики
веб-приложения и получения НСД к файлам.
14. OS Commanding. Выполнение команд ОС посредством манипуляций
входными данными приложения.
15. Path Traversal. Получения доступа к файлам, директориям и командам,
находящимся вне основной директории веб-сервера.
16. Predictable Resource Location. Предсказуемое расположение ресурсов,
позволяющие получить доступ к скрытым данным или функциональным
возможностям.
17. Remote File Inclusion (RFI).Тип атаки, которая позволяет использовать
удаленный файл на серверной стороне, через скрипт на веб-сервере.
18. Routing Detour. Маршрутизация SOAP сообщений.
19. Session Fixation. Фиксация сессии. Используя данный класс атак,
злоумышленник присваивает идентификатору сессии пользователя заданное
значение.
20. SOAP Array Abuse. Инъекции определений наборов данных в SOAP сообщение.
21. SSI Injection. Внедрение серверных расширений. Вставка серверных команд в
HTML код или запуск их напрямую с сервера.
22. SQL Injection. Внедрении в запрос произвольного SQL кода.
23. URL Redirector Abuse. Редиректы без верификации для спама.
24. XPath Injection. Внедрение операторов XPath атаки направленные на
веб-сервер, создающие запросы на языке XPath на основе данных, вводимых
пользователем.
25. XML Attribute Blowup."Раздутие" параметров.
26. XML External Entities. Инклуд внешнего файла.
27. XML Entity Expansion. Внедрение переменных из тела сообщения.
28. XML Injection. Внедрении в запрос произвольного XMLкода.
29. XQuery Injection. Внедрении в запрос произвольного XQuery кода.
Как должен выглядеть отчет?
Отчет должен содержать введение, где будет описана методика проведения работ, объект аудита, границы тестирования (scope), так же должна содержаться информация об используемых инструментальных средствах анализа защищенности, которые будут применяться при тестировании. Каждой уязвимости, обнаруженной в ходе проведения тестирования присваивается определенная степень риска – высокая, средняя, низкая.
Классификация уязвимостей должна быть описана в отчете, например, уязвимости присваивается высокая степень риска, если ее использование может привести к компрометации данных, доступности сервера или сервисов, выполнению произвольного кода, манипуляции с данными. Сюда же входят уязвимости связанные с отказом в обслуживании, слабые или стандартные пароли, отсутствие шифрования, доступ к произвольным файлам или конфиденциальных данных.
Для описания степени риска и оценки критичности обнаруженных уязвимостей используются классификации "The Common Vulnerability Scoring System (CVSSv2)", MITRE (CAPEC) и OWASP. Так же все уязвимости должны быть классифицированы по сложности эксплуатации и обнаружению.
Пример уязвимости:
Unrestricted upload
Потенциальный злоумышленник может обойти скрипт проверки расширения загружаемого файла, что позволит ему загрузить веб-шелл, получить контроль над приложением и доступ к серверу.
Сложность эксплуатации – легко.
Тип – удаленная.
Воздействие (CVSSv2) – Бизнесс воздействие – 10 баллов
CWE-434: Unrestricted Upload of File
http://cwe.mitre.org/data/definitions/434.html
OWASP Unrestricted File Upload
https://www.owasp.org/index.php/Unrestricted_File_...
Конечно же в отчете должны содержаться рекомендации по устранению выявленных в процессе тестирования уязвимостей.
А надо ли...?
Необходимость проведения теста на проникновение каждый определяет сам для себя. Задачи проведения перечислены в начале статьи. Если ресурс содержит критически важные и ценные данные, имеет высокую посещаемость, идет обработка перс. данных ну или сайт просто приносит хорошие деньги - необходимость проведения теста очевидна. Достаточно вспомнить недавнюю утечки данных FL.ru http://siliconrus.com/2015/02/fl-hacked .
По опыту могу сказать, что ломают все сайты, которые представляют той или иной интерес для взломщика. Иногда взлом происходит просто ради интереса или продвижения политический идей и т.д. ( http://ru.wikipedia.org/?oldid=65240870). В этом месяца было много дефейсов (подмена содержания главной страницы) исламским государством. На сайтах размещалась молитва и различные изображения, отпугивая клиентов.