Уязвимости сайтов

Уязвимости сайтов - это возможность их взлома благодаря наличию ошибок в программном коде, неправильных настроек системы управления (CMS) и операционной системы веб-сервера.  Ежегодно компании тратят огромные деньги на поиск и устранение уязвимостей в своих веб-проектах и неспроста. Код сайтов почти всегда имеет уязвимости. На данный момент классифицировано огромное количество уязвимостей сайтов, и это не считая обнаруженных 0-day уязвимостей.  

Классификация уязвимостей сайтов

Основные виды уязвимостей сайтов:

  1. XSS-уязвимость. Данная уязвимость позволяет запускать на сайте произвольный javascript-код с помощью форм. То есть, злоумышленник с помощью форм на сайте вводит вредоносный JS-код, который запускается на сайте. Помимо внедрения кода в формы XSS может выполняться также с помощью редактирования GET-переменных в ссылках.
  2. SQL-injection. Инъекция SQL-кода. С помощью SQL-запросов хакер может сделать дамп базы данных или внести в нее изменения. Сами запросы обычно передаются с помощью форм на сайте.
  3. HTML-bug. Внедрение или изменение с помощью форм на сайте HTML-кода этого же сайта.
  4. Предсказуемое расположение каталогов и служебных файлов. Плохо, если на сайте слишком предсказуемо расположены каталоги (например, админ-панель находиться по адресу /admin): это огромная уязвимость.
  5. Выполнение команд ОС. Иногда бывает так, что с помощью сайта возможно исполнить команды на сервере, на котором работает сайт. С помощью этой уязвимости хакеры могут запустить на сервере трояна.
  6. «Слабые» пароли доступа к админ-панели. В этом случае может использоваться атака Подбор паролей перебором (Brute Force).
  7. Отсутствие таймаута сессии (Insufficient Session Expiration) – если значение таймаута достаточно большое, то взломщик может использовать старые данные для входа.
  8. Индексирование директорий (Directory Indexing) – в случае отсутствия в директории страницы выводимой по умолчанию (index.html/home.html/default.htm), сервер отображает список директорий.
  9. Небезопасное восстановление паролей (Weak Password Recovery Validation) – данная ситуация может возникнуть если сервер дает возможность восстановить или изменить пароли других пользователей.
  10. Переполнение буфера (Buffer Overflow) – позволяет с помощью перезаписи данных в памяти системы, поменять путь исполнения программы. Данная уязвимость является наиболее распространенным багом в программном обеспечении.
  11. Предсказуемое значение идентификатора сессии (Credential/Session Prediction) – в этом случае у киберпреступника есть возможность перехватить сессию другого посетителя сайта. Уникальный номер сессии предсказывается или угадывается.
  12. Подмена содержимого (Content Spoofing) – в этом случае происходит подмена страниц и пользователь думает, что страницы созданы Web-сервером.
  13. Недостаточная аутентификация (Insufficient Authentication) – благодаря этой уязвимости злоумышленник может получить доступ к функциям сервера и важной информации, не имея прав доступа к ней.
  14. Отказ в обслуживании (Denial of Service) – при этой атаке нарушается работа Web-сервера.
  15. Данный класс атак направлен на нарушение доступности Web-сервера.
  16. Недостаточная авторизация (Insufficient Authorization) – возможна в тех случаях, когда аутентификация настроена неверно. Аккаунт взломщика не имеет ограничения в доступе к данным.
  17. Злоумышленники легко могут подобрать несложный пароль для доступа в админ-панель и заполучить полный контроль над сайтом.

Какие сайты наиболее уязвимы?

Согласно исследованию Positive Tehnologics, наиболее уязвимые сайты, написанные на PHP с использованием собственного движка. Наиболее защищены сайты на Java/ASP.NET с использованием коммерческих CMS. В данном случае лучше заплатить больше, но быть уверенным в безопасности своего продукта. Цель киберпреступника – контроль над сайтом, а множественные уязвимости помогут в достижении его цели.

Уязвимости сайтов

Как обнаружить и устранить уязвимости сайтов?

Источником угрозы могут являться: некачественный код сайта или сервера, Open-Source CMS, для которых злоумышленникам проще найти уязвимость написать эксплойт. Важно следить за возможными уязвимостями на своих сайтах при помощи специальных средств. Для поиска уязвимостей созданы автоматизированные программы, которые все делают вместо человека. Очень много уязвимостей найдено в популярных бесплатных CMS, и для этих уязвимостей написано много эксплоитов.  Инструментарий хакеров очень богат: у них есть и программы для автоматического тестирования каждого вида уязвимостей, и программы для автоматического поиска уязвимых сайтов, и инструменты для поиска уязвимостей в сервере. Важно вовремя обновлять CMS сайта, ведь в обновлениях движка часто исправляются различные уязвимости, а для того, чтобы не пропустить обновления можно использовать встроенные средства оповещения или подписаться на e-mail рассылку от разработчика CMS.