Чем искать уязвимости веб-приложений: сравниваем восемь популярных сканеров |
08.08.2019 00:00 |
Автор: T.Hunter Сканеры веб-приложений — довольно популярная сегодня категория софта. Есть платные сканеры, есть бесплатные. У каждого из них свой набор параметров и уязвимостей, возможных для обнаружения. Некоторые ограничиваются только теми, что публикуются в OWASP Top Ten (Open Web Application Security Project), некоторые идут в своем black-box тестировании гораздо дальше. ![]() В этом посте мы собрали восемь популярных сканеров, рассмотрели их подробнее и попробовали в деле. В качестве тренировочных мишеней выбрали независимые точки на двух платформах (.NET и php): premium.pgabank.com и php.testsparker.com. OWASP ZAPКак можно догадаться по названию, за выпуск OWASP ZAP отвечает та самая организация OWASP, что мы упомянули во вступлении. Это бесплатный инструмент для тестирования на проникновение и для поиска уязвимостей в веб-приложениях.Основные возможности OWASP ZAP:
Дополнительные фичи Интерфейс программы переведен на русский, что будет удобно для некоторых пользователей. Рабочая область OWASP ZAP складывается из нескольких окон. Внизу — вкладки с текущими заданиями и процесс их выполнения, слева — дерево сайтов, дополнительно можно вывести в правую часть окна запросов и ответов.
![]() С помощью маркетплейса можно немного расширить функциональность сканера. ![]() У каждого компонента программы есть много настраиваемых параметров. Например, мы можем настроить входящие векторы для активного сканирования, сгенерировать динамические SSL-сертификаты, добавить идентификаторы HTTP-сессий и т.д. ![]() Перейдем к тестам. При сканировании сайта php.testsparker.com была найдена Blind SQL Injection. На этом критичные уязвимости заканчиваются. Полные результаты OWASP ZAP на php.testsparker.com H: Advanced SQL Injection — AND boolean-based blind — WHERE or HAVING clause M: X-Frame-Options Header Not Set L: X-Content-Type-Options Header Missing L: Web browser xss protection is not enabled На premium.bgabank.com мы видим более интересные результаты: найдена возможность Server Side Include (SSI) и Reflected Cross Site Scripting. Полные результаты OWASP ZAP на premium.bgabank.com H: Server Side Include H: Reflected Cross Site Scripting M: X-Frame-Options Header Not Set M: Application Error Disclosure M: Directory Browsing M: Secure Pages Include Mixed Content (Including Scripts) L: X-Content-Type-Options Header Missing L: Web browser xss protection is not enabled L: Cross-Domain JavaScript Source File Inclusion L: Incomplete or No Cache-control and Pragma HTTP Header Set L: Cookie No HttpOnly Flag L: Cookie Without Secure Flag L: Content-Type Header Missing L: Private IP Disclosure I: Image Exposes Location or Privacy Data Все результаты сканирования можно экспортировать в отчет (поддерживается *.pdf, *.html, *.xml, *.json). В отчете подробно описываются уязвимости, найденные векторы, а также методы «закрытия» уязвимостей. ![]() В целом работать с OWASP ZAP нам понравилось. Есть все необходимые инструменты для пентеста веб-приложения, простой и понятный интерфейс, быстрое сканирование в один клик. И при этом гибкие, глубокие настройки для более детального сканирования, что может послужить отправной точкой для дальнейшего ручного поиска уязвимостей. Ниже мы еще расскажем о сканере Burp Suite Pro, который имеет с OWASP ZAP много общего. По количеству и качеству найденных уязвимостей первый рассмотренный нами сканер показал очень неплохой результат. Рекомендован к использованию в работе. W9scanW9scan — это бесплатный консольный сканер уязвимостей сайта с более чем 1200 встроенными плагинами, которые могут определять отпечатки веб-страниц, портов, проводить анализ структуры веб-сайта, находить различные популярные уязвимости, сканировать на SQL Injection, XSS и т. д. Более полный список возможностей W9scan W9scan автоматически генерирует отчеты о результатах сканирования в формате HTML. Для запуска сканирования требуется только указать URL сайта и плагины, которые будут использоваться. Можно выбрать сразу все, дописав «all».— Fingerprint detection
![]() При сканировании php.testsparker.com W9scan нашел svn и возможные пути загрузки payload. Из менее критичного — определил версии используемых сервисов, возможные векторы проведения XXE, XXS-атак, нашел конфигурационные файлы сервера и провел поиск субдоменов. На сайте premium.bgabank.com ничего критичного найдено не было. Но сканер определил возможные векторы проведения атак, определены версии сервисов, директории и субдомены. По результатам сканирования W9scan автоматически генерирует файл отчета в формате HTML. ![]() W9scan сканер подойдет для быстрого запуска в одну команду и мы рекомендуем использовать его как вспомогательный инструмент для определения версий сервисов, а также потенциальных векторов атак. WapitiЕщё один неплохой консольный сканер. Так же, как и W9scan, готов к старту в одну команду, при этом имеет больше разных настроек сканирования.![]() Wapiti производит поиск следующих уязвимостей:
При сканировании сайта php.testsparker.com были найдены уязвимости Blind SQL Injection, Cross Site Scripting, Commands execution. На premium.bgabank.com Wapiti в сравнении с другими сканерами показывает не такие выдающиеся результаты: был обнаружен только Cross Site Scripting. ![]() По результатам работы сканера также формируется отчет в формате HTML, в котором содержатся категории и число найденных уязвимостей, их описание, запросы, команды для curl и советы о том, как закрыть найденные дыры в безопасности. Как и следовало ожидать, Wapiti до уровня OWASP ZAP, конечно, не дотягивает. Но все же он отработал качественнее W9scan, хотя не был произведен поиск директорий, субдоменов и определение версий сервисов. Arachni![]() Мощный бесплатный комбайн для теста защищенности веб-приложений и поиска уязвимостей. Имеет графический интерфейс и огромную функциональность, о которой более подробно можно почитать на официальном сайте. Активное тестирование:
Полный список функций для активного тестирования Пассивное тестирование:
Полный список функций для пассивного тестирования
Внушительно, не правда ли? Но и это не все. В «паутину» завернута ещё куча плагинов, например Passive Proxy, Dictionary attacker for HTTP Auth, Cookie collector, WAF Detector и др. Сканер имеет приятный и лаконичный веб-интерфейс: ![]() И вот что нашел Arachni на наших тестовых сайтах. Php.testsparker.com:
Остальные уязвимости на php.testsparker.com H: File Inclusion H: Cross-Site Scripting (XSS) in HTML tag H: Cross-Site Scripting (XSS) H: Path Traversal M: Backup file M: Common directory M: HTTP TRACE L: Missing 'X-Frame-Options' header L: Password field with auto-complete L: Insecure client-access policy L: Insecure cross-domain policy (allow-access-from) L: Common sensitive file На premium.bgabank.com из критичного была обнаружена только возможность межсайтовой подделки запросов (CSRF). Полные результаты Arachni на premium.bgabank.com H: Cross-Site Request Forgery M: Mixed Resource M: HTTP TRACE M: Common directory M: Missing 'Strict-Transport-Security' header L: Private IP address disclosure Отдельно отметим, какие симпатичные отчеты выдает нам Arachni. Поддерживается немало форматов — HTML, XML, text, JSON, Marshal, YAML, AFR. ![]() В общем, Arachni оставляет после работы только положительные впечатления. Наше мнение: это «маст хэв» в арсенале любого уважающего себя спеца. ParosЕще один сканер веб-уязвимостей с графическим интерфейсом. По умолчанию включен в дистрибутив Kali Linux и установлен там локально. Имеет встроенный прокси, через который добавляются сайты для анализа, встроенный веб-паук, способный анализировать сайт и строить карту запросов.Для сканирования личного кабинета пользователя необходимо авторизоваться в браузере с включенным перенаправлением трафика через прокси Paros. Сканер будет использовать авторизованные куки в процессе сканирования. Отчет о работе можно экспортировать в HTML. Он сохраняется в файл root/paros/session/LatestScannedReport.htm и в дальнейшем перезаписывается. Если вы хотите сохранить результат предыдущего сканирования, то перед началом следующего сканирования необходимо создать копию имеющегося файла. Основные возможности (с оглядкой на OWASP TOP 10 2017):
![]() В финальном отчете к каждому типу уязвимостей есть более подробная информация и некоторые рекомендации о способе устранения. ![]() В нашем тестировании Paros показал довольно слабые результаты. На php.testsparker.com были найдены: H: SQL injection M: XSS M: Устаревшие файлы с исходным кодом M: Использование автозаполнения в формах с важной информацией (пароли и прочее). L: Раскрытие внутренних IP На premium.bgabank.com и того меньше: M: Directory browsing M: Использование автозаполнения в формах с важной информацией (пароли и прочее). В итоге, хотя сканер Paros прост и достаточно удобен в использовании, слабые результаты сканирования заставляют отказаться от его использования. Tenable.ioПлатный многофункциональный облачный сканер, который умеет находить большое число веб-уязвимостей и почти полностью покрывает OWASP TOP 10 2017.Сервис имеет встроенного веб-паука. Если в настройках сканирования указать данные авторизации (запрос авторизации, логин и пароль, авторизованные куки), то сканер проверит и личный кабинет (зону авторизованного пользователя). Кроме сканирования веб-приложений, Tenable.io умеет сканировать сеть — как на предмет известных уязвимостей, так и для поиска хостов. Возможно подключение агентов для сканирования внутренней сети. Есть возможность экспортирования отчета в различные форматы: *.nessus, *.csv, *.db, *.pdf. ![]() На скриншоте все домены «тестовые» ![]() Дополнительные профили сканирования. В данной статье не затрагиваются После сканирования становится доступна статистика и приоритизация найденных уязвимостей — critical, high, middle, low, information ![]() В карточке уязвимости представлена дополнительная информация о ней и некоторые рекомендации по ее устранению. ![]() Сканируем php.testsparker.com. Уязвимости с приоритетом high: H: Уязвимости компонентов — вышедшая из поддержки версия PHP — вышедшая из поддержки версия Apache H: Code injection H: SQLinj H: XSS H: LFI H: Path Traversal Middle- и low-уязвимости M: Раскрытие ценных данных — полный путь, бекапы M: Раскрытие внутренних IP M: Cookie без флага HTTPOnly M: Отправка пароля по HTTP L: Использование автозаполнения в формах с важной информацией L: Ответ сервера на TRACE запросы L: Не установлены header`ы Cache-Control, X-Content-Type-Options, X-Frame-Options, X-XSS-Protection Теперь premium.bgabank.com. Уязвимости с приоритетом high: H: Уязвимости компонентов
Middle- и low-уязвимости M: Web server phpinfo() M: Совместное использование HTTP и HTTPS M: Отсутствие перенаправления с HTTP на HTTPS M: Directory browsing M: Найдены backup файлы M: Использование небезопасной версии протокола SSL M: Истечение срока сертификата SSL/TLS L: Раскрытие внутренних IP L: Cookie без флага HTTPOnly L: Ответ сервера на TRACE запросы L: Не установлены header`ы Strict-Transport-Security, Cache-Control, X-Content-Type-Options, X-Frame-Options, X-XSS-Protection Сканер Tenable.io показал себя хорошо, нашел множество уязвимостей. Работу с ним упрощает удобный графический интерфейс и представление данных. Еще один плюс — наличие дополнительных профилей сканирования, в которые мы пока решили не зарываться. Важной особенностью является облачная структура сервиса. С одной стороны, сервис не использует локальные вычислительные ресурсы рабочего компьютера. С другой — не сможет просканировать веб-приложения в локальной сети. Burp Suite ProBurp Suite — это комплексное решение для проверок веб-приложений. Оно включает в себя разнообразные утилиты, позволяющие улучшить и ускорить поиск уязвимостей веб-приложений.В составе Burp Suite есть следующие утилиты:
![]() На вкладке Issue Definition представлен полный список всех уязвимостей, которые способен выявить данный сканер. Следует отметить, что список весьма внушительный. ![]() Все уязвимости разделены на 3 категории: high, medium, low. Также есть категория information, к которой относятся механизмы сбора различной полезной информации о сканируемом ресурсе. При запуске сканирования в окне Scan queue мы можем наблюдать за прогрессом по этапам. «Цветовая дифференциация штанов» присутствует. ![]() На вкладке Options выполняется основная настройка параметров сканирования. ![]() Для удобства опции разбиты по категориям. При необходимости можно получить справку по каждой категории прямо из окна настройки. ![]() В целом Burp Suite Pro показал неплохой результат. При сканировании php.testsparker.com было найдено и классифицировано достаточно уязвимостей чтобы получить полный контроль над веб приложением и его данными — это и OS command injection, и SSTI, и File path traversal. Полные результаты Burp Suite Pro на php.testsparker.com H: OS command injection H: File path traversal H: Out-of-band resource load (HTTP) H: Server-side template injection H: Cross-site scripting (reflected) H: Flash cross-domain policy H: Silverlight cross-domain policy H: Cleartext submission of password H: External service interaction (DNS) H: External service interaction (HTTP) M: SSL certificate (not trusted or expired) L: Password field with autocomplete enabled L: Form action hijacking (reflected) L: Unencrypted communications L: Strict transport security not enforced На сайте premium.bgabank.com были найдены: H: Cross-site scripting (reflected) M: SSL cookie without secure flag set M: SSL certificate (not trusted or expired) L: Cookie without HttpOnly flag set L: Password field with autocomplete enabled L: Strict transport security not enforced Если для веб-пентеста вы часто используете Burp Suite, вам нравится его экосистема, но хотелось бы как-то автоматизировать процесс поиска уязвимостей, то эта утилита отлично впишется в ваш арсенал. AcunetixВ заключение — еще один весьма неплохой коммерческий сканер. Его очень активно продвигают с помощью рекламы, но Acutenix не добился бы успеха без своей обширной функциональности. Среди доступных ему для обнаружения уязвимостей — все виды SQL injection, Cross site scripting, CRLF injection и прочие радости пентестера веб-приложений. Стоит отметить, что для качественного сканирования требуется выбрать правильный профиль.Интерфейс дашборда приятный: ![]() Все выявленные уязвимости по традиции раскладываются на четыре категории: High, Medium, Low. Ну и куда же без категории Information, в которую включаются все интересные, по мнению сканера, данные. ![]() На вкладке Scans мы можем наблюдать прогресс сканирования и прочую диагностическую информацию. ![]() После завершения сканирования на вкладке Vulnerabilities мы можем ознакомиться с тем, что и в каком количестве было найдено. Цветовая дифференциация на месте. В тесте на php.testsparker.com сканер показал неплохой результат, а вот с premium.bgabank.com откровенно подкачал. Полные результаты Acunetix php.testsparker.com: H: Apache 2.2.14 mod_isapi Dangling Pointer H: Blind SQL Injection H: Cross site scripting H: Cross site scripting (verified) H: Directory traversal H: File inclusion H: PHP code injection H: Server-side template injection H: SVN repository found H: User controllable script source M: Access database found M: Apache 2.x version older than 2.2.9 M: Apache httpd remote denial of service M: Apache httpOnly cookie disclosure M: Application error message M: Backup files M: Directory listing M: HTML form without CSRF protection M: Insecure clientaccesspolicy.xml file M: Partial user controllable script source M: PHP hangs on parsing particular strings as floating point number M: PHP preg_replace used on user input M: Source code disclosure M: User credentials are sent in clear text L: Apache 2.x version older than 2.2.10 L: Apache mod_negotiation filename bruteforcing L: Clickjacking: X-Frame-Options header missing L: Login page password-guessing attack L: Possible relative path overwrite L: Possible sensitive directories L: Possible sensitive files L: TRACE method is enabled premium.bgabank.com: L: Clickjacking: X-Frame-Options header missing Acunetix имеет большие возможности и подойдет, если вы ищете stand-alone решение. Веб-интерфейс прост и понятен, инфографика и отчеты выглядят вполне удобоваримо. Возможны осечки при сканировании, но, как говорил Тони Старк: «С мужиками такое случается. Не часто. Один разок из пяти». Общие итогиА теперь выводы по всем протестированным сканерам.
|