Зламали сайт: що робити і як очистити від вірусів
Якщо ваш сайт зламали, головне не панікувати і діяти по черзі: спершу закрити доступ, потім знайти й вичистити код, і обовʼязково закрити діру, через яку зайшли. Найчастіше шкідливий код лежить у базі, а не у файлах, тому антивірус хостингу мовчить. Нижче: як розпізнати злом, що зробити в першу годину і як не дати зараженню повернутися.
Як зрозуміти, що сайт справді зламали
Іноді злом видно одразу: замість головної чужий напис або редирект. Але частіше він тихий і працює тижнями, а ви дізнаєтеся останнім. Ознаки, за якими зараження себе видає:
- Сайт перекидає відвідувачів на сторонні сторінки (казино, аптеки), особливо з телефону або з пошуку.
- У пошуку під вашим сайтом зʼявилися чужі сторінки або ієрогліфи, а Google пише «цей сайт може бути зламано».
- В адмінці завелися користувачі з правами адміністратора, яких ви не створювали.
- Хостинг надіслав лист про шкідливий код або незвичне навантаження, іноді з блокуванням акаунта.
- Файли змінилися без вашої участі, зʼявилися невідомі .php-файли.
Перевірте сайт прямо зараз
Інструмент відкриє ваш сайт ззовні так, як його бачать різні відвідувачі: з компʼютера, з телефону та очима пошукового робота. Дефейс, мобільний редирект, клоакінг і застарілу версію CMS буде видно одразу. Доступ до сайту не потрібен.
Перша година: що зробити одразу
- Зробіть копію поточного стану, навіть зараженого: знадобиться, якщо щось піде не так.
- Змініть усі паролі: адмінка, FTP і SSH, база даних, панель хостингу.
- Перевірте список адміністраторів і видаліть тих, кого ви не створювали.
- Не поспішайте одразу видаляти файли: спочатку зрозумійте, що і де заражено.
- Якщо сайт розсилає спам або атакує інших, тимчасово закрийте його заглушкою, поки чистите.
Як вичистити сайт правильно
Порядок, який реально прибирає зараження, а не лише його сліди:
- Перевірте
.htaccessу корені та підпапках: редиректи й правила під робота. - Перевірте
index.phpі файли активного шаблона чи теми: інʼєкція зазвичай у перших рядках. - Перевірте базу: у WordPress це
wp_optionsіwp_posts, у Joomla параметри шаблона в таблиці#__template_styles. - Знайдіть і видаліть веб-шели: невідомі .php-файли, часто в папці uploads чи media.
- Перевірте завдання cron: вони відновлюють код після видалення.
- Оновіть CMS і всі розширення.
Чому антивірус хостингу мовчить
Дуже часто власник бачить від хостингу «все чисто» і заспокоюється, поки сайт продовжує шкодити. Причина проста: антивірус хостингу перевіряє файли за відомими сигнатурами, а шкідливий код нерідко лежить у базі даних (параметри шаблона, приховані записи) або в правилах .htaccess. Файли при цьому чисті, сканер чесно це й показує. Тиша сканера не доводить, що сайт у порядку.
Саме тому «хостинг сказав, що все гаразд» не означає, що злом усунено. Перевіряти треба і базу, і правила сервера, а не лише файли.
Як закрити діру, щоб не повторилося
Найгірша помилка, прибрати симптом і не закрити вхід. Тоді сайт ламають знову тим самим способом протягом дня. Щоб цього не сталося:
- Знайдіть точку входу: через яке розширення чи вразливість зайшли (логи сервера це показують).
- Оновіть CMS і розширення до підтримуваних версій, видаліть невикористовувані.
- Перевірте, що не лишилося бекдорів і завдань cron, які відновлюють код.
- Увімкніть базовий захист: обмеження доступу до адмінки, актуальні бекапи.
Якщо сайт на Joomla або WordPress
Joomla. Особливо вразлива Joomla 3: вона не отримує оновлень безпеки з 17 серпня 2023 року. Заходять через вразливості розширень (JCE, SP Page Builder) або шаблонного фреймворка Helix3. Без переходу на підтримувану версію 5 або 6 сайт заражають знову.
WordPress. Дивіться таблиці wp_posts і wp_options, файл functions.php активної теми та папку uploads: у ній не має бути .php-файлів. Найчастіше заходять через занедбаний або вразливий плагін.
Коли кликати фахівця
Має сенс не гаяти час самому, якщо:
- ви вже чистили, а зараження повернулося;
- код у базі, а не у файлах, і антивірус хостингу мовчить;
- хостинг заблокував акаунт за шкідливе ПЗ;
- у пошуку зʼявилися чужі сторінки або позначка «цей сайт може бути зламано»;
- робочої резервної копії немає.
Чищу сайти на будь-якій CMS і закриваю точку входу, а не лише симптом. Діагностика безкоштовна. Працюю з власниками сайтів з України, Польщі та з російськомовними в ЄС. З юридичними особами, зареєстрованими в Росії, не працюю: це обмеження санкцій ЄС.
Докладніше і заявкаЧасті запитання
Чому хостинг каже, що все чисто, а сайт заражений?
Тому що антивірус хостингу перевіряє файли, а шкідливий код часто лежить у базі даних або в правилах .htaccess. Файли при цьому справді чисті. Тиша сканера не означає, що сайт у порядку, треба перевіряти і базу.
Чи можна просто відновити з резервної копії?
Іноді так, але лише якщо копія завідомо чиста і ви знаєте дату зараження. Часто зараження сталося за тижні до того, як його помітили, і бекап уже містить бекдор. І головне: відкат не закриває діру, тому сайт ламають знову.
Я почистив сайт, а вірус повернувся. Чому?
Бо прибрали симптом, а не вхід. Лишився веб-шел, завдання cron або незакрита вразливість, і код відновлюється. Прибрати зараження і закрити вхід це дві різні роботи.
Скільки часу займає чистка?
Саме видалення шкідливого коду зазвичай кілька годин. Основний час іде на пошук точки входу і перевірку, що ще встигли залити. Без цього робота марна, бо зараження повернеться.
Як зрозуміти, що справа не в моєму компʼютері?
Відкрийте сайт з телефону через мобільний інтернет і попросіть знайомого з іншого міста. Якщо перекидає і в них, проблема в сайті. Якщо ж чужі сторінки відкриваються на різних сайтах тільки у вас, справа у вашому браузері.