
Проверка сайта на уязвимости: пошаговое руководство
Проверка сайта на уязвимости: сканеры, ручной аудит и пентест. Пошаговый план, чек-лист OWASP Top 10 и график проверок для сайта любого размера.
Проверка сайта на уязвимости: с чего начать и как не пропустить главное
Чтобы проверить сайт на уязвимости, составьте список всех его компонентов, прогоните внешний периметр и приложение через автоматические сканеры, проверьте CMS, плагины и права доступа вручную, а результаты разберите по степени риска и исправьте самое критичное в первую очередь.
В статье разберём, какие уязвимости встречаются чаще всего, чем отличаются сканирование, ручной аудит и пентест, какие инструменты использовать, как построить пошаговую проверку и как часто её повторять.
Что такое уязвимость сайта и почему проверять нужно всем
Уязвимость — это слабое место в коде, настройках сервера или бизнес-логике, которым можно воспользоваться, чтобы получить несанкционированный доступ, украсть данные, внедрить вредоносный код или вывести сайт из строя. Причём речь не только о крупных порталах: большинство взломов автоматизировано. Боты круглосуточно обходят интернет в поисках устаревших версий CMS, открытых админок и известных дыр в плагинах, и им всё равно, интернет-магазин перед ними или визитка небольшой компании.
Последствия взлома выходят далеко за рамки технической проблемы. Поисковые системы, включая Яндекс и Google, могут пометить заражённый сайт как опасный и понизить его в выдаче, браузеры начинают показывать пугающее предупреждение, а клиенты уходят к конкурентам. Если на сайте хранятся персональные данные, к репутационным потерям добавляется ответственность по закону о персональных данных (152-ФЗ).
Поэтому проверка на уязвимости — не разовая акция «на всякий случай», а часть регулярного обслуживания сайта, как резервное копирование или обновление контента.
Четыре уровня, которые проверяются на сайте
Открытые порты, лишние сервисы, поддомены, срок и настройки SSL-сертификата, DNS-записи.
Версии ПО, права на файлы, заголовки безопасности, доступ к служебным файлам и резервным копиям.
SQL-инъекции, XSS, CSRF, загрузка файлов, обход авторизации, ошибки в работе с сессиями.
Устаревшие версии, заброшенные плагины, уязвимые зависимости и сторонние скрипты.
OWASP Top 10: карта самых частых уязвимостей
Международный проект OWASP регулярно публикует список из десяти наиболее критичных категорий рисков веб-приложений. Это отличная отправная точка для любой проверки: если вы закрыли эти десять направлений, вы убрали большую часть реальных угроз.
Нарушение контроля доступа. Пользователь получает доступ к чужим заказам, профилям или админ-функциям, просто подменив идентификатор в адресе.
Криптографические сбои. Данные передаются без HTTPS, пароли хранятся в открытом виде или с устаревшим алгоритмом хеширования.
Инъекции. Через формы и параметры в базу данных или систему попадает вредоносный запрос: SQL-инъекции, внедрение команд, межсайтовый скриптинг (XSS).
Небезопасная архитектура и неверная конфигурация. Включён режим отладки, остались стандартные пароли, открыты каталоги со служебными файлами.
Устаревшие компоненты. Старая версия CMS, плагина или библиотеки с уже известной и опубликованной уязвимостью.
Ошибки аутентификации. Слабые пароли, отсутствие ограничения попыток входа и двухфакторной защиты.
Нарушение целостности данных и ПО. Подгрузка скриптов из недоверенных источников, небезопасные обновления.
Недостаточное журналирование и мониторинг. Атака идёт неделями, а владелец об этом не знает.
Подделка запросов на стороне сервера (SSRF). Сайт заставляют обращаться к внутренним ресурсам, к которым у атакующего нет прямого доступа.
Три подхода: сканирование, ручной аудит и пентест
Когда речь заходит о проверке сайта, под этим словом часто понимают совершенно разные вещи. На практике есть три уровня глубины, и они не заменяют, а дополняют друг друга.
Автоматическое сканирование — самый быстрый и доступный способ. Сканер обходит страницы, подставляет в параметры типовые «атакующие» значения и сверяет ответы сервера с базой известных проблем. Он отлично находит шаблонные уязвимости, отсутствующие заголовки безопасности и устаревшие версии ПО, но не понимает бизнес-логику: например, не заметит, что покупатель может изменить цену товара в запросе или посмотреть чужой заказ.
Ручной аудит выполняет специалист: он изучает архитектуру, просматривает код, проверяет разграничение прав и сценарии, которые сканер не воспроизведёт. Пентест (тест на проникновение) идёт дальше: эксперт действует как реальный злоумышленник и пытается объединить мелкие недочёты в полноценную атаку, показывая, чем это грозит бизнесу на самом деле.
Для небольшого сайта-визитки обычно достаточно регулярного сканирования и аккуратного обновления CMS. Для интернет-магазина, личного кабинета или сервиса с оплатой без ручного аудита и периодического пентеста не обойтись.
| Метод | Что выявляет | Когда применять | Примеры инструментов |
|---|---|---|---|
| Автоматическое сканирование | Известные уязвимости, XSS, SQL-инъекции, ошибки конфигурации | Регулярно и перед каждым релизом | OWASP ZAP, Nikto, Acunetix |
| Проверка CMS и зависимостей | Устаревшие версии, уязвимые плагины и библиотеки | Еженедельно и после любых обновлений | WPScan, npm audit, OWASP Dependency-Check |
| Ручной аудит | Ошибки логики, обход прав доступа, небезопасный код | Перед запуском крупных функций и оплаты | Burp Suite, ревью кода |
| Пентест | Цепочки атак и реальную эксплуатируемость дыр | Раз в год и после серьёзных изменений | Команда специалистов, Burp Suite, Nmap |
Как подготовиться к проверке и не навредить сайту
Прежде чем запускать любой сканер, убедитесь, что у вас есть право это делать. Проверять можно только собственные ресурсы или сайты, на аудит которых вы получили письменное согласие владельца. Несанкционированное тестирование чужого сайта может быть квалифицировано как неправомерный доступ к компьютерной информации по статье 272 УК РФ, даже если намерения были добрыми.
Второе правило — безопасность самой проверки. Активные сканеры отправляют тысячи запросов, заполняют формы тестовыми данными и могут создать мусорные записи, перегрузить слабый хостинг или случайно запустить рассылку. Поэтому идеально проводить тестирование на копии сайта (staging) с отдельной базой данных. Если такой копии нет, выберите время минимальной нагрузки, сделайте полную резервную копию файлов и базы и предупредите хостинг-провайдера и команду.
Наконец, заранее соберите информацию: список доменов и поддоменов, доступы в админку, перечень используемых плагинов и интеграций, схему расположения сервера. Чем полнее картина, тем меньше слепых зон останется после проверки.
Пошаговая проверка сайта на уязвимости
- 01
Проведите инвентаризацию. Выпишите все домены и поддомены, админки, API, тестовые стенды, формы, подключённые сервисы и сторонние скрипты. Забытый поддомен со старой версией сайта — любимая цель атакующих.
- 02
Сделайте резервную копию и согласуйте окно проверки. Сохраните файлы и базу данных, по возможности используйте staging-копию и ограничьте скорость сканирования.
- 03
Проверьте внешний периметр. Утилита Nmap покажет открытые порты и работающие сервисы, а Qualys SSL Labs оценит настройки HTTPS: версии протоколов, сертификат, цепочку доверия. Всё, что не нужно снаружи (базы данных, панели управления), должно быть закрыто.
- 04
Запустите автоматический сканер. OWASP ZAP или Nikto обойдут сайт и найдут типовые уязвимости. Начните с пассивного режима, затем переходите к активному на тестовой копии.
- 05
Проверьте заголовки безопасности и cookies. Mozilla Observatory покажет, настроены ли HSTS, Content-Security-Policy, X-Frame-Options, флаги Secure и HttpOnly у сессионных cookies.
- 06
Проанализируйте CMS, плагины и зависимости. Сверьте версии с актуальными, удалите неиспользуемые расширения. Для WordPress подойдёт WPScan, для проектов на JavaScript — npm audit, для остальных — OWASP Dependency-Check.
- 07
Проверьте авторизацию и права. Убедитесь, что у админки нет стандартного адреса и пароля, включена двухфакторная защита, число попыток входа ограничено, а обычный пользователь не может открыть чужие данные, меняя идентификатор в адресе.
- 08
Протестируйте формы и загрузку файлов. Проверьте, как сайт реагирует на спецсимволы и скрипты в полях, разрешены ли опасные расширения файлов и можно ли выполнить загруженный файл на сервере.
- 09
Загляните в инструменты поисковиков. В Яндекс Вебмастере изучите раздел «Безопасность и нарушения», в Google Search Console — отчёт о проблемах безопасности. Эти сервисы сообщают о заражении, которое вы могли не заметить.
- 10
Составьте отчёт, исправьте и перепроверьте. Распределите находки по критичности, устраните их по порядку и запустите проверку повторно, чтобы убедиться, что дыры действительно закрыты.
Как часто проверять сайт
Главная ошибка — считать проверку разовой задачей. Безопасность сайта меняется каждый день: выходят новые версии CMS, публикуются сведения о свежих уязвимостях в популярных плагинах, команда добавляет функции и правит код. Сайт, который был чистым в январе, к лету может содержать десяток новых проблем без единой вашей ошибки.
Разумный подход — многоуровневый график. Лёгкие автоматические проверки делаются часто и почти не отнимают времени, а глубокие и дорогие — редко, но регулярно. Ниже — ориентир, который можно адаптировать под размер и критичность вашего проекта.
График проверок: от каждого релиза до ежегодного пентеста
Сканирование зависимостей и быстрый прогон ZAP до выкладки на боевой сервер.
Контроль версий CMS и плагинов, просмотр логов, проверка уведомлений в Вебмастере и Search Console.
Глубокий скан, ревизия прав доступа, проверка резервных копий и сертификатов.
Независимый аудит специалистами, имитация реальной атаки и отчёт для руководства.
Где чаще всего ошибаются при проверке
Даже технически грамотные владельцы сайтов нередко делают проверку формально: запускают один сканер, смотрят на зелёную галочку и считают вопрос закрытым. Такой подход создаёт ложное чувство защищённости, которое опаснее честного незнания. Разберём самые распространённые просчёты.
Типичные ошибки при проверке сайта на уязвимости
Как делают неправильно
- Полагаются только на один автоматический сканер и не проверяют бизнес-логику
- Сканируют только главную страницу и забывают про поддомены, админку и API
- Запускают агрессивное сканирование на боевом сайте без резервной копии
- Находят проблемы, но не исправляют их или не перепроверяют результат
- Проверяют сайт один раз при запуске и больше к этому не возвращаются
Как делать правильно
- 01
Комбинировать сканеры, проверку компонентов и ручной анализ прав доступа
- 02
Начинать с инвентаризации всех доменов, поддоменов и точек входа
- 03
Тестировать на staging-копии или в окно минимальной нагрузки с бэкапом
- 04
Фиксировать найденное в отчёте, назначать ответственных и сроки, затем запускать повторную проверку
- 05
Закрепить регулярный график проверок и встроить автоматические тесты в процесс релиза
Как читать отчёт сканера и расставлять приоритеты
Отчёт автоматического сканера может содержать десятки и сотни пунктов, и первая реакция — растерянность. Важно понимать: не все находки одинаково опасны. Часть из них — информационные замечания (например, раскрытие версии сервера), часть — ложные срабатывания, а несколько действительно критичных дыр способны разрушить проект за вечер.
Для оценки используйте два критерия: насколько легко уязвимость эксплуатировать и что именно потеряет бизнес при успешной атаке. SQL-инъекция в форме входа с доступом к базе клиентов — это немедленный приоритет. Отсутствие одного из необязательных заголовков на странице без личных данных может подождать плановой доработки.
Каждую находку проверяйте вручную, прежде чем отправлять разработчикам: так вы отсеете ложные срабатывания и сэкономите команде время. А в отчёт включайте не только описание проблемы, но и шаги воспроизведения, затронутые страницы и рекомендации по исправлению.
Приоритеты исправления уязвимостей
Ориентировочные сроки — их стоит скорректировать под ваш проект и ресурсы команды.
Удалённое выполнение кода, SQL-инъекция с доступом к данным, открытая админка со слабым паролем.
Хранимый XSS, обход авторизации, уязвимый плагин с публичным эксплойтом.
Отсутствие CSP и HSTS, слабые настройки cookies, раскрытие служебной информации.
Информационные замечания, раскрытие версии ПО, небольшие недочёты конфигурации.
Что делать, если сайт уже взломан
Если проверка показала следы взлома или поисковик прислал уведомление о заражении, действовать нужно быстро и последовательно. Паника и хаотичные правки только усложняют расследование.
Сначала изолируйте проблему: переведите сайт в режим обслуживания или ограничьте доступ, чтобы не заражать посетителей. Затем сохраните копию текущего состояния и логи сервера — они понадобятся, чтобы понять, как именно проникли злоумышленники. Далее смените все пароли и ключи: доступы к хостингу, FTP, базе данных, админке CMS и API.
После этого найдите и удалите вредоносный код, а главное — устраните причину проникновения: обновите уязвимый плагин, закройте дыру в коде, поправьте права на файлы. Простое восстановление из бэкапа без закрытия уязвимости приводит к повторному взлому в считанные дни. Завершите работу проверкой в Яндекс Вебмастере и Google Search Console и повторным сканированием.
Что даёт регулярная проверка сайта на уязвимости
- 01
Защита клиентских данных и снижение риска утечек, штрафов и судебных споров
- 02
Сохранение позиций в Яндексе и Google, которые падают при заражении и пометке «опасный сайт»
- 03
Стабильная работа без внезапных простоев, рассылок спама и блокировок хостинга
- 04
Экономия бюджета: исправить дыру заранее дешевле, чем восстанавливать сайт после взлома
- 05
Доверие клиентов и партнёров, особенно если на сайте есть оплата и личные кабинеты
- 06
Понятная картина состояния сайта и план его развития с учётом безопасности
Итоги: безопасность сайта — это процесс, а не разовое действие
- 01
Проверяйте только свои ресурсы или те, на аудит которых есть письменное согласие
- 02
Сочетайте автоматические сканеры, анализ CMS и зависимостей, ручной аудит и пентест
- 03
Опирайтесь на OWASP Top 10 как на базовый чек-лист рисков
- 04
Расставляйте приоритеты по критичности и обязательно перепроверяйте исправления
- 05
Следите за разделами безопасности в Яндекс Вебмастере и Google Search Console
Начните с малого: составьте список всех компонентов сайта, запустите бесплатные OWASP ZAP и Nmap, обновите CMS и плагины. Затем закрепите график проверок и по мере роста проекта подключайте ручной аудит и пентест. Если нужна независимая оценка и конкретный план исправлений, лучше доверить это специалистам.
Часто задаваемые вопросы
Запустите бесплатные сканеры: OWASP ZAP и Nikto проверяют сайт на известные уязвимости, Nmap показывает открытые порты, а Qualys SSL Labs и Mozilla Observatory оценивают HTTPS и заголовки безопасности. Дополнительно загляните в разделы безопасности Яндекс Вебмастера и Google Search Console.
Сканер автоматически ищет известные шаблонные проблемы и быстро формирует список. Пентест — это ручная имитация атаки специалистом, который проверяет логику приложения, права доступа и цепочки уязвимостей. Сканирование нужно регулярно, пентест — раз в год и после крупных изменений.
Автоматические проверки встраивайте в каждый релиз, обновления CMS и плагинов контролируйте еженедельно, полное сканирование проводите раз в квартал, а независимый пентест заказывайте минимум раз в год.
Нет, без письменного согласия владельца это может быть расценено как неправомерный доступ к компьютерной информации (ст. 272 УК РФ). Сканируйте только собственные ресурсы или сайты, на проверку которых у вас есть официальное разрешение.
Откройте раздел безопасности в Яндекс Вебмастере или Search Console, посмотрите примеры заражённых страниц, удалите вредоносный код, закройте уязвимость, смените пароли и ключи, затем отправьте сайт на перепроверку.
Проверим ваш сайт на уязвимости до того, как это сделают злоумышленники
Получите отчёт с найденными рисками, приоритетами и понятным планом их устранения
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Проверяем сайты на CMS и самописных движках



