ERP · WEB · MOBILE · SOFTWARE

000
Усі статті
Веб-розробка•8 хв читання
O
Команда Obliko
Розробка сайтів, застосунків та автоматизація

Зламали сайт на WordPress: що робити і як очистити від вірусу

Покроковий план, якщо сайт на WordPress зламали: ознаки зараження, перші 60 хвилин, очищення файлів і бази, зняття попередження Google, захист від повторного зламу. Чек-лист для власника бізнесу.

#безпека сайту#WordPress#вірус на сайті#злам

Сайт на WordPress зламують не тому, що він комусь «потрібен». Його знаходять автоматичні сканери, які шукають застарілі плагіни і слабкі паролі на мільйонах сайтів одночасно. Тому злам — це не питання «чи», а «коли», якщо сайт не обслуговується. Нижче — покроковий план, що робити, коли це вже сталося, і як не опинитися тут вдруге.

Про профілактику і причини, чому ламають саме малий бізнес, — у статті безпека сайту для бізнесу. Тут — саме план дій при зламі.

Ознаки, що сайт зламали

Злам часто непомітний для власника, бо шкідливий код показує себе не всім. Перевірте:

Ознака Як перевірити
Редирект на казино, аптеки, «знайомства» Відкрийте сайт з телефона через мобільний інтернет і з пошуку Google, а не з закладки
Спам-сторінки в Google Пошук site:вашдомен.ua — шукайте чужі товари, ієрогліфи, дивні URL
Попередження в браузері чи пошуку «Сайт може бути зламаний» у видачі, червоний екран у Chrome
Нові адміністратори WordPress → Користувачі, фільтр «Адміністратор»
Чужі PHP-файли Папка wp-content/uploads — там не має бути файлів .php
Лист від хостингу Блокування за шкідливий код або розсилку спаму
Повідомлення в Search Console Розділ «Проблеми з безпекою» і «Заходи, вжиті вручну»
Повільна робота, навантаження на сервер Статистика хостингу, невідомі процеси й завдання cron

Важливо: шкідливий код часто показує редирект лише відвідувачам із Google або лише з мобільних, а адміністратора, який зайшов в адмінку, не чіпає. Тому «у мене все відкривається» — не доказ, що сайт чистий.

Перші 60 хвилин: що робити одразу

  1. Не видаляйте нічого навмання. Спершу зробіть повну копію поточного стану — файлів і бази. Вона знадобиться, щоб зрозуміти, як зламали.
  2. Закрийте сайт від відвідувачів режимом обслуговування або обмеженням доступу на рівні хостингу, якщо він роздає шкідливий код. Так ви захистите клієнтів і репутацію в Google.
  3. Змініть паролі з чистого компʼютера: хостинг-панель, FTP/SFTP, база даних, усі адміністратори WordPress, пошта, привʼязана до адмінки.
  4. Перевірте адміністраторів і видаліть незнайомих.
  5. Напишіть хостингу. Багато хостингів мають сканер і логи доступу — вони покажуть, через що зайшли.
  6. Знайдіть останній чистий бекап. Відновлення з нього — найшвидший шлях, але лише разом із закриттям причини.

Якщо бекапів немає або вони лежать на тому ж сервері, що й сайт, — це окрема проблема. Див. резервне копіювання сайту.

Очищення: покроковий план

Крок 1. Замініть ядро WordPress чистою копією

Завантажте ту саму версію WordPress з офіційного сайту і замініть папки wp-admin і wp-includes та файли в корені, крім wp-config.php. Ядро не має містити ваших змін — усе, що відрізняється від оригіналу, підозріле.

Крок 2. Перевірте wp-config.php і .htaccess

У wp-config.php шукайте незнайомий код на початку чи в кінці файлу, підключення сторонніх файлів, закодовані рядки (base64_decode, eval, gzinflate). У .htaccess — редиректи на чужі домени, особливо з умовами на мобільні браузери чи реферер Google.

Крок 3. Перевстановіть теми і плагіни

Видаліть кожен плагін і тему і поставте свіжі копії з офіційних джерел. Невикористовувані — видаліть зовсім. «Обнулені» (піратські) плагіни і теми — одна з найчастіших причин зламу: у них бекдор закладений із самого початку.

Крок 4. Перевірте uploads

У wp-content/uploads мають бути зображення і документи. Будь-які .php, .phtml, дивні .ico чи .js у папках за роками — видаляйте після перевірки. Додатково варто заборонити виконання PHP у цій папці на рівні сервера.

Крок 5. Перевірте базу даних

Шкідливий код ховається і в базі:

  • таблиця options — підозрілі значення в siteurl, home, автозавантажуваних опціях;
  • posts — вставлені скрипти, приховані посилання, тисячі спам-сторінок;
  • users і usermeta — приховані адміністратори;
  • завдання cron, які знову створюють шкідливі файли.

Крок 6. Змініть ключі безпеки

Згенеруйте нові ключі й солі в wp-config.php — це завершить усі активні сесії, включно з сесіями зловмисника.

Крок 7. Перевірте результат

Проскануйте сайт ще раз, відкрийте його з мобільного інтернету і з пошуку Google, перевірте, що нові PHP-файли не зʼявляються протягом кількох днів.

Google: як прибрати наслідки зламу з пошуку

  1. Search Console → «Проблеми з безпекою». Перевірте приклади URL, які вказав Google.
  2. Спам-сторінки видаліть і віддавайте для них 404 або 410, а не редирект на головну.
  3. Перевірте robots.txt і sitemap — зловмисники інколи додають туди свої сторінки.
  4. Надішліть запит на повторну перевірку з коротким описом: що знайшли, що видалили, як закрили причину.
  5. Стежте за індексацією кілька тижнів: спам-сторінки зникають із видачі поступово.

Як працювати з Search Console — у статті Google Search Console для початківців. Якщо після зламу просіли позиції — див. трафік упав: як знайти причину.

Як не допустити повторного зламу

Захід Навіщо
Оновлення ядра, тем і плагінів Більшість зламів — через відомі вразливості старих версій
Мінімум плагінів Кожен плагін — чужий код на вашому сервері
Двофакторна автентифікація для адмінів Вкрадений пароль сам по собі не дає входу
Обмеження спроб входу, нестандартний логін Захист від перебору паролів
Заборона PHP в uploads Завантажений бекдор не запуститься
Заборона редагування файлів з адмінки DISALLOW_FILE_EDIT у wp-config.php
Підтримувана версія PHP Старий PHP — ще одна дірка і проблеми з оновленнями
Бекапи поза сервером Відновлення без переговорів зі зловмисником
Моніторинг доступності й змін файлів Ви дізнаєтесь про злам першими, а не від клієнтів
Захист форм від ботів Див. спам у формах

Граблі з практики. Плагін-фаєрвол Wordfence у режимі розширеного захисту має завантажуватися раніше за WordPress через параметр PHP auto_prepend_file. На одному з українських хостингів ми налаштовували це через .user.ini і .htaccess — файли записані, сайт працює, а рівень захисту лишається базовим. Причина: цей хостинг читає параметр лише з власної панелі налаштувань PHP. Висновок: після будь-якого налаштування захисту перевіряйте, що він реально увімкнувся, а не що «файл збережено».

Чого не робити після зламу

  • Не платіть зловмисникам. Якщо вимагають викуп за сайт чи базу, оплата не гарантує нічого, крім того, що вас запамʼятають як платоспроможного.
  • Не обмежуйтеся плагіном-сканером. «Сканер нічого не знайшов» не означає «сайт чистий»: код у базі і в cron сканери пропускають часто.
  • Не відновлюйте бекап без закриття причини. Відновили — і через день те саме, бо вразливий плагін нікуди не подівся.
  • Не міняйте паролі з зараженого компʼютера. Якщо пароль украли кейлогером, новий пароль піде туди ж.
  • Не мовчіть, якщо витекли дані клієнтів. Якщо зловмисник міг отримати доступ до бази клієнтів, оцініть ризики і повідомте тих, кого це стосується.

Що злам коштує бізнесу

Злам — це не лише години на очищення. Бізнес втрачає:

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

Порівняйте ці втрати з вартістю регулярного обслуговування: оновлення, бекапи і моніторинг коштують менше за один серйозний злам. Скільки коштує підтримка — у статті підтримка сайту: скільки коштує.

Коли варто не лікувати, а переробити

Інколи очищення — це латання старого будинку. Сигнали, що час думати про новий сайт:

  • тема не оновлюється роками, а PHP на хостингу вже не підтримується;
  • плагінів десятки, і половину ніхто не памʼятає, навіщо поставили;
  • злам повторюється;
  • сайт повільний і застарілий, і його все одно доведеться переробляти.

Так було в стоматологічної клініки IDEALE: шаблонна тема WordPress на непідтримуваній версії PHP і блог із трьома записами 2021 року. Замість латання ми зробили новий сайт із власною адмінкою, де команда сама редагує вміст, а аудит безпеки увійшов в обсяг робіт ще до запуску. Сайт і адмінка працюють у хмарному акаунті самої клініки.

Про вибір технології — у статті WordPress чи Next.js.

Чек-лист для власника

  • Зроблено копію поточного стану перед очищенням
  • Змінено всі паролі: хостинг, FTP, база, адміни, пошта
  • Видалено незнайомих адміністраторів
  • Ядро, теми і плагіни замінено чистими копіями
  • Перевірено wp-config.php, .htaccess, uploads, базу, cron
  • Згенеровано нові ключі безпеки
  • Сайт перевірено з мобільного і з пошуку Google
  • Надіслано запит на повторну перевірку в Search Console
  • Оновлено все, видалено зайві плагіни, увімкнено 2FA
  • Налаштовано бекапи поза сервером і моніторинг

Головне

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

Якщо сайт уже зламали або ви підозрюєте, що з ним щось не так, ми в Obliko проводимо аудит безпеки й очищення сайту, а якщо латати вже нема чого — робимо розробку сайту під ключ з безпекою в базовому обсязі робіт. Надішліть адресу сайту і що саме ви помітили — скажемо, з чого почати.

Часті запитання
Як зрозуміти, що сайт на WordPress зламали?

Типові ознаки: редиректи на сторонні сайти (часто лише з мобільного або лише з Google), спам-сторінки з чужими товарами в пошуку, нові адміністратори в WordPress, незнайомі файли PHP у папці uploads, попередження Google «Сайт може бути зламаний», лист хостингу про шкідливий код або розсилку спаму, різке падіння позицій.

Чи допоможе плагін безпеки очистити зламаний сайт?

Плагін-сканер допомагає знайти частину заражених файлів, але не гарантує очищення: шкідливий код ховається в базі даних, у файлах теми, у завданнях cron і в нових адміністраторах. Надійний шлях — замінити ядро, теми і плагіни чистими копіями, вручну перевірити uploads, базу і користувачів, змінити всі паролі й ключі, а потім закрити причину зламу.

Скільки часу займає очищення сайту після зламу?

Простий випадок із чистим бекапом — кілька годин. Якщо бекапу немає, зараження давнє і Google уже показує попередження, — від одного до кількох днів на очищення плюс від кількох днів на перевірку Google після запиту на повторний розгляд.

Чому сайт зламують повторно після очищення?

Бо прибрали наслідки, а не причину: лишилася вразлива версія плагіна чи теми, не змінили паролі до хостингу і FTP, не знайшли бекдор у uploads або в базі, лишили зайвого адміністратора. Після очищення обовʼязково оновлюють усе, видаляють невикористовувані плагіни і вмикають захист входу.

Як зняти попередження Google про зламаний сайт?

Після повного очищення відкрийте Google Search Console, розділ «Проблеми з безпекою», перевірте, що всі вказані URL більше не містять шкідливого вмісту, і надішліть запит на повторну перевірку з описом, що саме зроблено. Видаліть спам-сторінки або віддавайте для них код 404/410.

Потрібен сайт під ключ?

Від структури й дизайну до запуску. Домен і доступи оформлюємо на вашу компанію.

Читати далі
Резервне копіювання сайту: як не втратити все за одну ніч
Що таке резервне копіювання сайту, чому бекапи рятують бізнес, як часто їх робити, де зберігати й чим небезпечна єдина копія на тому ж сервері. Практичні принципи без техжаргону для власника.
SSL-сертифікат і HTTPS: навіщо це сайту й скільки коштує
Що таке SSL-сертифікат і HTTPS простими словами, навіщо замочок у браузері вашому бізнесу, як він впливає на довіру клієнтів і пошук, які бувають сертифікати й скільки це реально коштує.
Безпека сайту: чому ламають малий бізнес і що робити, якщо вже зламали
Чому «кому ми потрібні, ми маленькі» — найдорожчий міф, звідки насправді беруться дірки в сайті, які базові речі реально захищають бізнес, і покроковий алгоритм дій, якщо сайт уже зламали.