Як дізнатися, що ваш сайт зламано?
Ознаки бувають різні. Іноді це очевидно, іноді ви дізнаєтеся лише тоді, коли Google надішле вам листа або клієнт поскаржиться.
Поширені ознаки:
- Дивні посилання у вашому футері або контенті, що ведуть на сайти азартних ігор, фармацевтики або для дорослих
- Google Search Console показує попередження про безпеку
- Ваш хост призупинив акаунт через "шкідливе програмне забезпечення"
- Відвідувачів перенаправляють на інший сайт
- Ваш пароль адміністратора перестав працювати
- Ваш сайт позначено як "оманливий" у Google
Крок 1: Не панікуйте та не видаляйте все
Інстинкт видалити все і почати з нуля зрозумілий, але неправильний. Вам потрібно зрозуміти, як вони потрапили, інакше вас зламають знову за тиждень.
Крок 2: Вимкніть сайт з мережі
Поставте сайт на режим технічного обслуговування — встановіть плагін (наприклад, "WP Maintenance Mode") або увімкніть цей режим у панелі хостингу (cPanel → "Maintenance Mode" або "Site Offline"). Це зупинить поширення шкідливого ПЗ на відвідувачів, поки ви чистите.
Крок 3: Змініть усі паролі
Змініть всі перелічені, навіть якщо вони здаються не пов'язаними:
- Пароль адміністратора WordPress (усі облікові записи адмінів)
- Облікові дані FTP / SFTP
- Пароль панелі керування хостингом
- Пароль бази даних (у wp-config.php)
- Електронна пошта, пов'язана з WordPress
Також перевірте: чи є облікові записи адмінів, яких ви не впізнаєте? Видаліть їх.
Крок 4: Скануйте на наявність шкідливого ПЗ
Завантажте та запустіть Wordfence — для цього в адмінці WordPress перейдіть у Плагіни → Додати новий, знайдіть Wordfence, встановіть та активуйте. Після активації перейдіть у Wordfence → Scan → Start New Scan. Також скористайтеся сканером вашого хостингу (у панелі керування часто є розділ безпеки) або сервісом на кшталт Sucuri SiteCheck (онлайн-сканер, не потребує встановлення).
Шукайте:
- Файли в несподіваних місцях (PHP-файли в
/uploads/) - Нещодавно змінені основні файли (
wp-login.php,index.php) - Обфускований код (рядки, закодовані в base64, виклики eval())
Якщо у вас є доступ до сервера через SSH, виконайте наступні команди. Якщо ні — скористайтеся файловим менеджером хостингу для ручної перевірки.
# Перевірка нещодавно змінених файлів (останні 7 днів)
find /path/to/wp -name "*.php" -mtime -7
# Пошук eval+base64 (поширений шаблон шкідливого ПЗ)
grep -r "eval(base64_decode" /path/to/wp --include="*.php"
Крок 5: Очистіть зараження
Варіант A: Відновлення з резервної копії
Якщо у вас є чиста резервна копія до зараження, відновіть з неї — через панель хостингу (наприклад, у cPanel розділ "Backup") або за допомогою плагіна резервного копіювання (наприклад, UpdraftPlus). Це найбезпечніший підхід.
Варіант B: Ручне очищення
- Замініть основні файли WordPress свіжозавантаженими (не чіпайте wp-content або wp-config.php)
- Видаліть усі плагіни або теми, яких ви не впізнаєте
- Перевстановіть усі плагіни з нуля (з wordpress.org, а не з заражених копій)
- Пошукайте в базі даних вставлені посилання (відкрийте phpMyAdmin у панелі хостингу, виберіть базу даних, натисніть SQL і вставте запити):
SELECT * FROM wp_options WHERE option_value LIKE '%eval(%';
SELECT * FROM wp_posts WHERE post_content LIKE '%<script%';
Крок 6: З'ясуйте, як вони потрапили
Поширені точки входу:
| Вектор | Як перевірити |
|---|---|
| Застарілий плагін | Перейдіть у Плагіни → Встановлені плагіни та подивіться, які потребують оновлення |
| Нульова тема/плагін | Якщо ви використовували піратське ПЗ, це майже напевно причина |
| Слабкий пароль адміністратора | Перевірте журнали доступу — знайдіть у панелі хостингу розділ "Logs" або "Access Logs" на наявність спроб брутфорсу |
| Стара версія WordPress | Перевірте wp-includes/version.php |
| Зламаний хостинг-акаунт | Запитайте у свого хостинг-провайдера журнали доступу |
Крок 7: Посильте захист перед поверненням в мережу
- Оновіть WordPress, усі плагіни, усі теми
- Видаліть будь-які плагіни або теми, які ви активно не використовуєте
- Встановіть плагін безпеки (Wordfence, Solid Security)
- Увімкніть двофакторну автентифікацію для облікових записів адміністраторів
- Змініть префікс таблиць бази даних, якщо він все ще
wp_ - Вимкніть XML-RPC, якщо ви ним не користуєтеся
Крок 8: Запросіть повторний перегляд Google
Якщо Google позначив ваш сайт, перейдіть у Google Search Console → Проблеми безпеки → Запросіть перевірку після очищення. Зазвичай це займає 1–3 дні.
Коли варто викликати фахівця
Якщо зараження глибоке (база даних забита спамом, шкідливе ПЗ у багатьох файлах у різних каталогах, або ви не можете визначити точку входу) — ручне очищення стає витратним за часом та ризикованим.
Я неодноразово чистив зламані сайти на WordPress. Якщо ви зараз у такій ситуації, розкажіть мені, що ви бачите, і я допоможу вам визначити найшвидший шлях вперед.