Шкідливий код на сайті: як зрозуміти, що вас заразили
«Сайт заражений» означає, що на ньому з'явився чужий код: у файлах, у базі або в шаблоні. Працює він тихо і зазвичай не для вас, а для відвідувачів і пошукових роботів — показує їм те, чого ви не публікували.
Аналогія для власника сайту
Як якби в підсобці магазину поселився сторонній. Він не ламає вітрину — йому невигідно, щоб ви помітили. Він тихо користується вашою адресою і робить дублікат ключа, щоб повернутися після зміни замка. Тому чистка без пошуку входу зазвичай закінчується повторним зараженням.
Ознаки, які видно ззовні
| Що ви помічаєте | Що зазвичай за цим стоїть |
|---|---|
| Перехід з пошуку веде на чужий сайт, а прямий вхід — ні | Умовний редирект за джерелом переходу |
| У видачі у ваших сторінок чужі заголовки — аптеки, казино | Клоакинг: роботу віддається не та сторінка, що людині |
| Р різке падіння трафіку без зміни позицій | Попередження браузера «сайт може завдати шкоди» на вході |
| Листи з домену масово йдуть у спам | Домен потрапив у поштові чорні списки через розсилку |
| Нові файли та адміністратори, яких ви не створювали | Бекдор і обліковка для повторного входу |
Пошук позначає такий сайт, знижує довіру до домену і виводить заражені сторінки з індексу; при спам-ін'єкціях можливі й ручні санкції. Повернення позицій займає тижні: спочатку пошук і сервіси репутації повинні підтвердити, що сайт чистий.
Як це виглядає у звіті Security Shield
Якщо знайдено хоча б один ознака зараження, звіт починається не з оцінки, а з вердикту «Заражений» — червоний рівень світлофора. Ззовні сканер бачить обфусцований JavaScript, скрипти майнінгу, невидимі фрейми, перехоплення полів карти, приховані спам-лінки, ознаки клоакингу і редиректів, а також домен у чорних списках.
Частина зараження ззовні не видна принципово: веб-шелл у файлі, змінені файли ядра CMS, PHP-файл у каталозі завантажень, правила в .htaccess, код у базі, сторонній адміністратор. Це знаходить необов'язковий серверний агент — скрипт, який ви ставите на свій хостинг. Докладніше — в статті про Security Shield.
Видалити знайдені файли недостатньо: якщо точка входу залишилася, код повернеться за години. Шукайте не тільки сам файл, але й те, через що він потрапив — застарілий плагін, вкрадений пароль FTP, чужий сайт на тому ж акаунті хостингу.
Що робити по кроках
- Зробіть копію «як є». Файли і база в поточному вигляді — це і доказ, і страховка на випадок невдалої чистки.
- Знайдіть змінене. Відсортуйте файли за датою зміни і порівняйте ядро CMS і плагіни з офіційними версіями.
- Відновіть чисті версії. Ядро і розширення переінсталюйте поверх, шаблон і завантаження чистіть точково.
- Оновіть CMS, тему і плагіни, видаліть невикористовувані і випали з офіційного каталогу.
- Змініть всі паролі і ключі: адміністратори, база, FTP і SSH, панель хостингу, пошта. Перевірте адміністраторів і завдання планувальника.
- Запустіть повторне сканування — вердикт повинен змінитися, а знахідки з ознаками зараження піти.
- Подайте заявку на перегляд у сервіси репутації і в панель вебмайстра — мітка не знімається сама.
Як не допустити повторно
Оновлення і мінімум плагінів дають більше, ніж платний «антивірус для сайту». Права на файли тримайте строгими, виконання PHP у каталозі завантажень забороніть, для адмінки увімкніть двофакторний захист. Після чистки перевірте сторінки через SEO-аудит, а по публікаціях — індексацію.