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

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

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

Можно выделить следующие основные виды уязвимостей сайтов:

  1. XSS (cross-site scripting, межсайтовое исполнение сценариев). Данная уязвимость позволяет запускать на сайте произвольный JavaScript-код с помощью форм ввода. Также XSS может выполняться с помощью редактирования GET-переменных в ссылках.
  2. SQL-инъекция. С помощью SQL-запросов хакер может сделать дамп базы данных или внести в нее изменения. Сами запросы обычно передаются с помощью форм ввода на сайте.
  3. Возможность внедрения или изменения HTML-кода сайта (опять же за счет полей и форм для ввода данных).
  4. Предсказуемое расположение каталогов и служебных файлов (например, панель управления администратора находится по адресу /admin), а также стандартные префиксы таблиц в базе данных.
  5. Выполнение команд ОС. Иногда бывает так, что с помощью сайта возможно исполнить команды на сервере, где он работает. Посредством этой уязвимости злоумышленник способен, например, запустить на сервере троянскую программу.
  6. Типовые имена учетных записей (admin, root) и / или слабые пароли доступа к панели администрирования. В этом случае может оказаться эффективным перебор паролей (брутфорс).
  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). Отдаваемые посетителю данные заменяются на поддельные, но пользователь по-прежнему думает, что отображаемые страницы созданы веб-сервером.
  13. Недостаточная аутентификация (Insufficient Authentication). За счет этой уязвимости злоумышленник может получить доступ к функциям сервера и важной информации, не имея соответствующих прав доступа.
  14. Отсутствие ограничений на количество попыток входа в систему. В такой ситуации робот злоумышленника может быстро и эффективно перебирать пароли к учетным записям.

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

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

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

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

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