Сегодня часто можно наблюдать, что в организациях безопасности веб-сайта не уделяется должного внимания. Вероятность взлома кажется минимальной. Но это ощущение обманчиво.
Статистика показывает, что до 50% проникновений в инфраструктуру компаний злоумышленники осуществляют, именно благодаря небезопасной конфигурации веб-сайта, а также использованию в нем уязвимых технологий.
Если ваш сайт взломан и не работает, или управление над ним перехватил злоумышленник (о чем вы можете даже и не догадываться), всё это может привести к финансовому ущербу и подрыву доверия пользователей сайта.
Что могут сделать с сайтом злоумышленники, получив к нему доступ?
1. заблокировать его работу
2. разместить на сайте «вредоносный» контент
3. разместить «вредоносный» код для более серьезных неприятностей в виде неработающих форм для приема заявок от пользователей, кражи конфиденциальной информации, перенаправления пользователей на вредоносный сайт злоумышленника.
Это не все последствия, но довольно значимые по силе последствий.
Итак, кто подвержен взлому своих веб-ресурсов?
Сегодня даже компании, профессионально занимающиеся безопасностью публикующихся в сети информационных ресурсов, часто подвергаются хакерским атакам. В это списке отметились мастодонты ИБ в России – BI.ZONE и «Лаборатория Касперского». И здесь как никогда уместно рассматривать ситуацию не с точки зрения «произойдет ли инцидент», а с точки «когда он произойдет».
И поэтому заниматься своей безопасностью необходимо уже сейчас.
Что входит в понятие безопасности веб-сайта?
Безопасность веб-сайта – это меры, применяемые владельцами веб-сайтов для предотвращения несанкционированного их использования и защиты конфиденциальных данных.
Эти меры включают в себя:
- использование надежных паролей посетителями и администраторами сайта;
- шифрование предаваемых данных с помощью SSL-сертификатов;
- постоянный мониторинг запросов к сайту и выявление подозрительной активности, например, путем использования технологии WAF (англ. Web Application Firewall);
- автоматическое резервное копирование данных, в случае нарушения целостности данных;
- ограничение доступа к файлам, в которых хранится конфиденциальная информация;
- периодическое проведение анализа уязвимостей веб-сайта и его тестирования на проникновение (пентест);
- выполнение рекомендаций по результатам исследования веб-сайта, обновления необходимых компонентов и применение требуемых настроек конфигурации, повышающих безопасность веб-сайта.
Обновил ПО – уверен в стабильной работе ресурса
Неспособность своевременно обновлять компоненты веб-сайта и защищать его от возможных атак потенциальных злоумышленников может вылиться в катастрофу для владельца сайта, особенно если сайт хранит чувствительные данные. Их хищение может серьезно сказаться на текущих бизнес-процессах организации.
Так нашими специалистами было обнаружено используемое на веб-сайте устаревшее ПО, которое имело множество уязвимостей, в том числе с готовыми практическими доказательствами наличия уязвимости (PoC [1]), что позволило без особого труда раскрыть списки пользователей и проложить дальнейший вектор атаки на веб-сайт.
[1] PoC – proof of concept. Программное средство, доказывающее существование уязвимости. Может послужить основой для создания более продвинутых средств эксплуатации.
Провел инвентаризацию – проверил все уязвимые места инфраструктуры
Очень важно выявлять и устранять любые возможные слабые и уязвимые места веб-сайта, иначе это сделает злоумышленник. Его действия, в свою очередь, могут привести к критическим последствиям для организации: финансовым потерям, ущербу репутации и даже уголовной ответственности.
Приведем пример, как в ходе исследования веб-сайта нашими специалистами был найден старый, похоже, всеми забытый дамп базы данных, хранящий в том числе и информацию о пользователях.
Это были учетные данные для входа на ресурс. Для подбора паролей нами была использована утилита hashcat, предназначенная для восстановления паролей.
В результате мы получили валидные учетные данные одного из пользователей, которые впоследствии использовали для получения доступ к административной консоли ресурса.
То есть парольная политика ресурса не являлась безопасной. Так происходит, когда используемый пользователем пароль содержится в общеизвестном словаре для перебора паролей, а срок действия пароля не ограничен. По итогу этот забытый файл мог найти злоумышленник и, используя его, как точку входа, провести успешную атаку.
Закрыл уязвимости – обеспечил защиту
Сегодня существует множество веб-уязвимостей, которые могут быть использованы злоумышленниками, а владельцы веб-сайта чаще всего и не подозревают об их наличии у него на ресурсе. Уязвимости классифицируются по уровню критичности. Наличие незакрытых уязвимостей высокого уровня критичности говорит о том, что ресурс в любой момент может быть скомпрометирован злоумышленником.
Здесь есть еще один важный момент, связанный с последствиями от незакрытых уязвимостей.
Существуют так называемые «клиентские» уязвимости, которые несут риски для самих посетителей веб-сайта, так как могут помочь злоумышленнику скомпрометировать данные определенного пользователя.
Так, в ходе ручного тестирования каждого пользовательского поля веб-сайта наши специалисты обнаружили возможность внедрения произвольного JavaScript-кода – значение передаваемого параметра URL-запроса копировался в значение атрибута HTML-тега в HTTP-ответе. В итоге, так как отправляемые на сервер данные не фильтровались и не подвергались санитизации, а в ответе приложение никак не изменяло вводимые пользователем данные, на сайте была обнаружена возможность отправки вредоносного кода.
Данная «клиентская» уязвимость не несла прямой угрозы для веб-сайта, однако могла быть использована потенциальным злоумышленником для проведения атаки на его посетителей и клиентов.
Пентест как способ выявления всех ошибок веб-ресурсов
Тестирование на проникновение, часто называемый просто пентестом, на сегодня является ключевым методом, обеспечивающим безопасность и защищенность сайта.
В рамках проведения пентеста можно выделить следующие цели:
- выявление возможных «лазеек» безопасности на веб-сайте;
- проверка эффективности существующей системы безопасности и принятых мер;
- проверка правильности конфигурирования ресурса, а также надежность используемых компонентов, в том числе применяемых средств защиты.
Таким образом, пентест призван выявить все слабые места безопасности сайта, в том числе возможные уязвимые используемые технологии или ошибки конфигурации и кода, допущенные разработчиками или администраторами сайта.
В отличие от обычного анализа уязвимостей данный подход не только находит список уязвимостей, но и включает в себя моделирование атак на систему для выявления слабых мест и потенциальных точек входа, которые могут быть использованы злоумышленниками для получения несанкционированного доступа к внутренней инфраструктуре или для извлечения конфиденциальной информации.
Тестирование на проникновение помогает выявить текущий (актуальный) уровень безопасности веб-ресурса, а также разработать рекомендации по повышению этой защиты.
По итогам проведенного исследования и подготовленным рекомендациям в отчете клиент сможет минимизировать риски безопасности и обеспечить полную защиту своего веб-ресурса (сайта).
Проведение пентеста на постоянной основе является важным шагом к обеспечению безопасности веб-сайта. Сегодня, когда технологии развиваются с высокой скоростью, а наполненность веб-сайта растет, злоумышленники ищут новые, более изощренные способы взлома и получения доступа к защищаемым вами данным. Поэтому здесь как никогда важна регулярность действий (тестирований ресурса) и безусловное выполнение клиентом всех выданных ИБ-командой рекомендаций.
Пентест. Основные этапы
Тестирование на проникновение веб-сайта проводится в несколько шагов:
1. Первым шагом будет планирование исследования, в результате которого будут определены множество факторов, такие как объем ресурсов, сроки проведения работ и возможные ограничения, которых должны придерживаться специалисты дабы избежать нарушений работы сайта.
2. Второй шаг включает разведку целевого ресурса, в том числе определение IP-адреса, доменных имён, используемых технологий и возможных средств, защищающих ресурс.
3. Третий шаг заключается в моделировании атак на основе полученных данных об уязвимостях и допущенных ошибках конфигурации. Для обнаружения недостатков специалисты используют автоматизированные средства. Кроме того, для полной картины выявленных угроз безопасности обычно проводятся ручные тесты, так как некоторые скрытые угрозы автоматизированными сканерами могут быть не идентифицироваться.
Обнаруженные уязвимости и недостатки впоследствии атакуются специалистами (пентестерами) в целях получения несанкционированного доступа к тем или иным разделам веб-сайта, например, к конфиденциальным данным или к системе, на которой хостится сам веб-ресурс.
4. На четвертом шаге специалисты анализируют результаты проведенного исследования и формируют отчет, в котором отражена вся проделанная работа.
В отчет входят цели, поставленные перед пентестерами, использованные ими эксплойты, список выявленных ошибок и актуальных уязвимостей, выводы по итогам тестирования, а также рекомендации по исправлению всех недочетов.
5. Пятым шагом будет повторный тест, суть которого заключается в проверке эффективности работ по устранению организацией выявленных в ходе предыдущего тестирования недочетов.
6. И последний шестой шаг – это участие в программе Bug Bounty. Данное исследование призвано выявить, например, уязвимости 0-days. Суть программы заключается в выплате вознаграждений сторонним этичным хакерам, за найденные ими уязвимости на вашем веб-сайте, которые могли не заметить разработчики или отдел безопасности. При этом организация, принимающая участие в данной программе устанавливает правила – указывает активы, которые можно проверять, типы уязвимостей и разрешенные методологии тестирования.
На последние 2 шага современные российские организации идут весьма редко. Однако, это очень важные этапы для того, чтобы понимать, насколько велика вероятность успешности атаки на ваш веб-ресурс.
Пентест веб-ресурса «на пальцах»
Итак, мы рассмотрели, какие угрозы несет ваш веб-ресурс, какие пути может использовать злоумышленник для проникновения во внутреннюю сеть организации, основные этапы тестирования. Теперь пришло время показать «на пальцах», как будет проходить пентест веб-ресурса.
Для проведения тестирования веб-сайтов мы используем автоматизированные средства, целью которых является выявление веб-уязвимостей ресурсов.
После этого запускается ручной поиск и верификация ошибок конфигурации, тестирования системы управления доступом и аутентификации, механизмов авторизации, управления сессиями и обработки ошибок, а также поиск уязвимостей, связанных с некорректной обработкой передаваемых на сервер данных, включая возможность внедрения инъекций, скриптов и загрузку вредоносных файлов на сервер. Здесь необходимы инструменты и методы так называемого ручного поиска, так как автоматизированные сканеры не могут обнаружить угрозы в полном объеме.
В случае обнаружения уязвимости принять соответствующие меры по ее закрытию на ранней стадии будет намного легче, чем пожинать плоды кибератаки злоумышленника. Кроме того, закрытие уязвимости в кратчайшие сроки поможет снизить риск возможной успешной атаки.
В рамках проведения пентеста команда пентестеров готовит возможные векторы атак на веб-приложение и проводит эксплуатацию выявленных уязвимостей.
По итогу работ в отчетной документации публикуется список выявленных уязвимостей и слабостей конфигурирования с их итоговой критичностью для приложения и инфраструктуры в целом.
В случае успешного пентеста в отчете также будет представлен поэтапный процесс получения доступа к инфраструктуре организации. А итоговым пунктом отчета станут рекомендации для эффективного исправления недочетов и повышения уровня безопасности веб-ресурса в целом.