Як вилікувати зламаний сайт на WordPress: покроково

Чиста світла смуга, витерта на запиленій поверхні, поруч біла серветка

Зламаний сайт лікується не в тому порядку, в якому підказує паніка. Найчастіша помилка - одразу кинутися видаляти підозрілі файли. Після цього сайт перестає працювати, слідів більше немає, а зловмисник досі всередині.

Нижче послідовність, яка працює.

Крок 0. Зафіксувати стан

До того, як щось видаляти, зробіть повну копію: файли і база. Так, заражену.

Вона потрібна з двох причин. По-перше, якщо під час чистки зламається щось потрібне, буде куди повернутися. По-друге, саме по цій копії потім видно, куди зайшли і що встигли зробити. Без неї ви лікуєте наосліп.

Крок 1. Зрозуміти, що саме сталося

Різні зараження лікуються по-різному, тому спочатку діагноз.

  • Спам у видачі - у Google на вашому домені чужі сторінки. Класичний варіант japanese keyword hack.
  • Редирект відвідувачів - сайт перекидає людей на сторонній ресурс, часто тільки з мобільних або тільки при переході з пошуку.
  • Дефейс - замість головної чужа сторінка. Помітно одразу, лікується найпростіше.
  • Розсилка спаму - хостинг блокує пошту, домен потрапляє в чорні списки.
  • Прихований майнер або бекдор без видимих слідів - сайт наче працює, але навантаження на сервер зросло.

Корисні місця, куди варто заглянути: Search Console у розділі Проблеми безпеки, логи доступу на хостингу за період, коли почалися дивні речі, і дати зміни файлів.

Крок 2. Закрити вхід

Це найважливіший крок, і саме його зазвичай пропускають. Поки доступ у зловмисника є, чистити марно.

  1. Змінити паролі: усі адміністратори WordPress, панель хостингу, FTP і SFTP, користувач бази даних.
  2. Оновити ключі безпеки у wp-config.php. Це розлогінює всіх, включно з тим, хто зараз сидить у вашій адмінці з чужої сесії.
  3. Видалити невідомих користувачів у WordPress.
  4. Перевірити власників ресурсу в Search Console і прибрати чужих.

Крок 3. Замінити те, що можна замінити

Ядро WordPress, плагіни і теми - це файли, які завжди можна взяти заново з офіційного джерела. Тому їх не чистять, а перевстановлюють.

  • Ядро WordPress: перевстановити ту саму версію поверх.
  • Плагіни: видалити і поставити заново з каталогу. Ті, що більше не оновлюються, - замінити на аналоги.
  • Тему: якщо це стандартна тема, перевстановити. Якщо кастомна - доведеться дивитися файли руками.

Після цієї операції залишається дуже вузьке коло місць, де може ховатися код: власна тема, папка uploads, корінь сайту і база даних.

Крок 4. Вичистити те, що замінити не можна

Що дивитися:

  • wp-content/uploads - файлів .php тут не має бути взагалі;
  • .htaccess у корені і у вкладених папках - дописані правила редиректу;
  • wp-config.php і index.php - сторонні рядки на початку файлу;
  • файли активної теми, особливо functions.php і header.php;
  • у базі: таблиця налаштувань, вміст записів, заплановані задачі.

Маркери у коді: eval(, base64_decode(, gzinflate(, preg_replace з модифікатором /e, довгі нечитабельні рядки, код одразу після відкриваючого тега без жодного коментаря.

Про заплановані задачі. Улюблений спосіб повернутися: у WordPress створюється завдання, яке раз на кілька годин відновлює видалені файли. Ви чистите сайт увечері, а вранці все на місці. Якщо зараження повертається саме так - шукати треба в задачах і в базі, а не у файлах.

Крок 5. Прибрати наслідки у пошуку

Сайт чистий, але Google про це ще не знає, а в індексі досі висять чужі сторінки.

  1. Спамні адреси мають віддавати 410, а не 404 і не редирект на головну.
  2. Видалити чужу карту сайту, подати свою.
  3. У Search Console, розділ Проблеми безпеки, подати заявку на перевірку з описом виконаних робіт.
  4. Через тиждень перевірити site:вашсайт.com ще раз.

Коли краще не робити самому

Чесно: частину випадків реально закрити самостійно, якщо ви впевнено почуваєтесь у файлах і базі. Але є ситуації, де самостійна чистка виходить дорожчою за роботу спеціаліста.

  • Зараження повертається після чистки - значить, знайдено не все.
  • Сайт комерційний і простій коштує грошей щодня.
  • На сервері кілька сайтів: зараження між ними переповзає, і чистити треба всі одночасно.
  • Google вже показує попередження відвідувачам - тут кожен день впливає на репутацію.
  • Немає бекапу і немає впевненості, що саме змінилося.

Коротко

Спочатку копія, потім діагноз, потім закриття доступу, і лише потім чистка. Ядро, плагіни і теми перевстановлюються, а не лікуються. Наприкінці - 410 для спамних адрес і заявка в Search Console.

Потрібна допомога зі зламаним сайтом?

Перевіряю, чищу і закриваю вразливість, через яку зайшли.

Написати