просто о сайтах

Как проверить сайт на уязвимости самому

Сайт открывается по HTTPS, значок замка на месте. Кажется, что с безопасностью всё в порядке, но это только верхний слой: у 449 из 479 небольших компаний, чьи сайты мы прогнали через сканер за последний месяц, не хватает хотя бы одной защитной настройки, которую замок никак не показывает. Разбираем, что реально проверить бесплатно за 15–20 минут и где заканчиваются возможности открытых сервисов.

Зачем нужен аудит безопасности сайта

«Работает же» и «защищён» — разные вещи. Сайт открывается, принимает заказы и не подаёт никаких признаков проблемы. А рядом при этом лежит забытый файл резервной копии с паролями от базы данных, стоит устаревший SSL-сертификат или не хватает защитного заголовка, который мог бы блокировать распространённую атаку. Хотя бы в общих чертах проверить это стоит любому владельцу. Особенно если на сайте есть оплата, личный кабинет или форма с данными клиентов.

1. Проверка HTTPS и SSL-сертификата

Замок в адресной строке браузера говорит только об одном: сертификат существует и не просрочен. Правильно ли он настроен, замок не показывает. Бесплатно проверить SSL-сертификат можно на Qualys SSL Labs (ssllabs.com/ssltest). Вставляете адрес и получаете оценку от A до F, версии протоколов, устаревшие шифры и известные уязвимости вроде Heartbleed. Оценка C и ниже — повод разобраться, что именно устарело в настройке сервера.

Замок стоит не у всех. В нашей проверке 479 сайтов 8 работали вообще без HTTPS, у 10 браузер не признавал сертификат и показывал красное предупреждение, у 8 срок сертификата истекал в ближайшие дни. Ещё 46 сайтов открывались и по защищённому адресу, и по обычному http без перенаправления, а 62 на защищённой странице подгружали незащищённые картинки или скрипты. Итого хотя бы одна проблема с шифрованием у 104 сайтов, это 22 %.

2. Проверка защитных заголовков браузера

Помимо самого HTTPS, есть набор служебных заголовков, которые сервер отправляет браузеру вместе со страницей: они блокируют часть атак ещё до того, как вредоносный код успевает выполниться. Оценить их бесплатно можно на Mozilla HTTP Observatory (developer.mozilla.org/en-US/observatory). Сервис выставляет оценку и прямо называет, какого заголовка не хватает (Content-Security-Policy, X-Frame-Options, Strict-Transport-Security и другие).

Это самая массовая проблема из всех, что мы видели: из 479 сайтов хотя бы один защитный заголовок не отдавали 449, то есть 94 %. Причина простая: хостинг по умолчанию их не ставит, а разработчик о них не вспоминает, потому что на работу сайта они не влияют. Заметно это становится только при атаке.

ЗаголовокОт чего защищаетНет у сайтов из 449
Referrer-PolicyАдрес страницы, с которой ушёл посетитель, не утекает на чужие сайты444 (99 %)
Content-Security-PolicyЧужой скрипт, подсунутый в страницу, не выполнится437 (97 %)
X-Content-Type-OptionsБраузер не откроет картинку как скрипт427 (95 %)
Strict-Transport-Security (HSTS)Браузер не пойдёт на сайт по незащищённому http даже по старой ссылке377 (84 %)
X-Frame-OptionsСайт нельзя встроить в чужую страницу и подменить кнопки343 (76 %)

Каждый из них добавляется одной строкой в настройках сервера. Работа на полчаса, если знать, что именно дописать.

3. Утечка служебных и резервных файлов

Частая и незаметная дыра — файлы вида .env, .bak, config.php.bak, оставленные на сервере после правок или бэкапа. Если такой файл лежит внутри общедоступной папки сайта, он может открываться в браузере как обычный текст, вместе с паролями и ключами внутри. Проверить это самому частично можно: попробуйте открыть в браузере адрес вида вашсайт.ru/.env или вашсайт.ru/wp-config.php.bak. Если вместо ошибки 403/404 показывается текст файла, это серьёзная находка: доступ нужно закрывать немедленно.

4. Открытые уязвимости и сервисы

Это уже сложнее сделать самому без специальных инструментов. Сайт нужно просканировать на известные уязвимости (CVE) и на случайно открытые наружу технические сервисы: админ-панели, тестовые окружения, служебные порты. Здесь одного бесплатного онлайн-сервиса недостаточно. Нужен профильный сканер и умение читать его результат, не путая реальную уязвимость с ложным срабатыванием.

Цифр по третьему и четвёртому пункту у нас нет. Массовая проверка 479 сайтов смотрела только то, что сервер сам отдаёт любому посетителю: сертификат, заголовки, перенаправления. Перебирать адреса служебных файлов и сканировать чужой сайт на уязвимости без согласия владельца нельзя, поэтому эти две проверки мы делаем только по заказу, для конкретного сайта и с ведома его хозяина.

Четыре вещи, которые сервисы не покажут

Разрозненные бесплатные проверки показывают часть картины, но не складывают её в целое. Самому сложно оценить:

  • Совокупный уровень риска. Оценка SSL A+ ничего не значит, если рядом открыт файл с паролями. Смотреть нужно на всё вместе.
  • Приоритеты исправления. Какая из найденных проблем действительно критична, а какая подождёт до следующего обновления сайта.
  • Уязвимости и открытые сервисы. Щадящее автоматическое сканирование на известные CVE и случайно открытые административные интерфейсы.
  • Правильную интерпретацию технического отчёта. Сервисы вроде SSL Labs дают верный, но сухой технический вывод. Перевести его в понятный план действий — отдельная работа.

Разница между «аудитом безопасности» и обычным (комплексным) аудитом сайта простая. Полная проверка смотрит на сайт целиком: закон, тексты, поиск, работу форм. Проверка на уязвимости занимается только защитой, остального не касается. Многим сайтам полную достаточно пройти один раз, а защиту стоит смотреть отдельно и чаще — особенно после каждого крупного обновления кода.

Когда стоит заказать аудит безопасности

Если на сайте есть оплата, личный кабинет или формы с данными клиентов, заказать аудит безопасности сайта имеет смысл не откладывая. Мы проверяем HTTPS/SSL-сертификат, защитные заголовки, утечки служебных файлов и известные уязвимости тремя независимыми проверками сразу и присылаем отчёт: что уязвимо, чем грозит и что закрыть первым. Доступ к вашим системам не нужен, достаточно адреса сайта. Если не уверены, нужен ли он именно вашему сайту, напишите нам, подскажем.

Что почитать дальше

← Ко всем материалам «Просто о сайтах»

проверим за вас

Проверка сайта на уязвимости — покажем, где дыры

Оставьте адрес сайта — пришлём на почту отчёт: HTTPS/SSL, защитные заголовки, утечки файлов, известные уязвимости.

Проверить сайт
Полная проверка сайта4 990 ₽
Юридическая проверка сайта2 990 ₽
Проверка сайта на уязвимости2 990 ₽