Как удалить вредоносное ПО с WordPress сайта самостоятельно

Источники заражения WP сайтов

 

Введение

Считается, что более 50% всех вебсайтов в Интернете заражены тем или иным способом. А каждый день взламывается более 100 000 сайтов. Существует ряд способов взлома веб-сайта или заражения его вредоносным кодом, в том числе: Backdoor (Черный ход), Pharma Hacks (Подмена мета-тэгов), Brute-force (Грубая сила), Redirect (Перенаправление), XSS (Межсайтовый скриптинг), DoS (Denial of Service – Отказ в обслуживании), Defacement (Порча), Phishing (Фишинг), SEO Spam (SEO-спам),
Malware (Вредоносное ПО), Misconfiguration (Неправильная конфигурация), Vulnerable code (Уязвимый код), Vulnerable plugin/extension (Уязвимый плагин / расширение).





WordPress сайт часто становится целью взлома, и причин для этого несколько:
1. Код WordPress сайта расширяется с помощью большого и разнообразного количества плагинов.
2. Каждое плагин, как правило имеет полностью читаемый код.
3. Движок WordPress очень популярен и на его основе создано огромное количество веб-сайтов.
Можно проверить, насколько сайт заражён (например этот сайт) , если воспользоваться командой, которую можно ввести в адресную строку любого веб-браузера: site:olegyakupov.com/blog
Изучение поисковой выдачи подскажет, заражён веб-сайт или нет.

Краткая характеристика некоторых уязвимостей WordPress сайтов

Рассмотрим самые распространённые типы уязвимостей/методов, которыми пользуются злоумышленники нацеленные на WordPress сайты.

Backdoors

Backdoor (бэкдор) – это уязвимость, которая предоставляет злоумышленникам скрытые проходы, обходящие протоколы безопасности для получения доступа к веб-сайтам на WordPress не стандартным методом – wp-admin, SFTP, FTP и так далее. Использования этой уязвимости позволяют хакерам нанести ущерб серверам хостинга с последующем “межсайтовым” заражением  нескольких сайтов, размещенных на одном сервере.
Бэкдоры часто маскируются и выглядят как легитимные файлы WordPress ядра или темы/плагина, дают доступ, как к файловой системе, так и базе данных, используя слабые места и ошибки в устаревших (вовремя не обновлённых) версиях.
Для профилактики и лечение этого типа уязвимости можно начать с проверки сайт с помощью веб-сервиса компании Sucuri.net SiteCheck, который может обнаружить  бэкдоры.

Проверил virtualuppermantle.info – ничего полезного не увидел в отчёте.

Двухфакторная аутентификация, блокировка IP-адресов, ограничение доступа администратора и предотвращение несанкционированного выполнения файлов PHP легко устраняет распространенные бэкдор-угрозы.

Pharma Hacks

Эксплойт “Pharma Hack” используется, как метод для вставки вредоносного кода в устаревшие версии сайтов и плагинов для WordPress, а как следствие происходит подмена мета-тэгов. В SERP (выдаче поисковых систем) вместо страниц своего сайта пользователи видят рекламу фармацевтических компаний. Хотя уязвимость  Pharma Hack – это скорее спам, чем вредоносное ПО, она  дает поисковым системам достаточно оснований для блокировки сайта.
Движущий силой “Pharma Hack” являются бэкдоры в плагинах, темах и базах данных, которые можно очистить, следуя инструкциям из этого, старого, но полезного поста от Sucuri.
Предупреждается “Pharma Hacks” регулярным обновлением ядра, темы и плагинjd WordPress.

Brute-force

Brute-force – это, как правило, попытка авторизации методом перебора. Используются скрипты перебирают пароли, а в случае успеха, злоумышленники получают доступ к вашему сайту. Ограничение количества возможных попыток авторизации, двухэтапная аутентификация, логирование, использование белых и черных списков IP-адресов, а так же надежных паролей – являются одними из самых простых и высокоэффективных способов предотвращения такого рода атак.
Но, к сожалению, некоторые владельцы веб-сайтов WordPress не выполняют эти меры безопасности, тогда как хакеры легко могут скомпрометировать до 30 000 веб-сайтов за один день, используя атаки методом “Brute-force”.

Перенаправление (Redirect)

Перенаправления создаются благодаря бэкдорам и внедряют код в файлы сайта. На зараженных субъектах, сценарии для перанаправления, часто расположены в файле .htaccess, но также часто можно встретить как в ядре WordPress, так и в файлах темы (например в index.php). Действуя скрытно и направляя ваш трафик на вредоносные или рекламные сайты.

Межсайтовый скриптинг (XSS)

XSS – метод, при котором скрипт внедряется в тело веб-сайта или приложения. Обычно это JS-скрипты которые работают на стороне браузера конечного пользователя без его ведома и без ведома владельца сайта. Целью обычно является получение файлов cookie или данных сеанса или, возможно, даже перезапись HTML на странице.

Отказ в обслуживании (DoS)

Одна из самых опасных уязвимостей, которая вызывает отказа в обслуживании (Denial of Service или просто DoS),  использует ошибки в коде, просто “сжирая” оперативную память ОС на которой работает сайт. Миллионы сайтов, изо дня в день, подвергаются атакам, что вызывает полную остановку сервера. В широком смысле такой метод называют – DDoS (Distributed Denial-of-Service).
Даже актуальные версии WordPress не могут всесторонне защитить от крупных DDoS-атак. Но, по крайней мере, помогут вам не попасть под перекрестный огонь финансовых учреждений и владельцем бот-нетов.

К началу страницы

Версия PHP, на которой работает WP сайт

Не знаете, на какой версии PHP работает ваш сайт? Быстрый способ проверить это- инструмент Pingdom. Проверка начнется сразу после того как вы введете URL в строку поиска. По-завершении прокрутите вниз до блока «File requests». Нажмите на первый запрос и найдите параметр «X-Powered-By». Обычно это покажет версию PHP, которую использует ваш веб-сервер. Однако некоторые хостинг-компании удаляют этот заголовок по соображениям безопасности.

Обнаружен взлом или заражение веб сайта

Если обнаружено, что веб сайт взломан или чувствуется подозрительная активность на сайте, нужно, как можно скорее восстановить веб сайт. Можно постараться сделать это самому, “вручную”, то есть самостоятельно, но можно использовать специальные сервисы. Вот несколько наиболее известных, платных сервисы по выявлению и очитке веб-сайто от вредоносного кода: SUCURI, SiteGuard, Wordfence, Fix My Site, SiteGuarding, Malcare, Web Malware Removal, Astra, Fixed, One Hour Site Fix, Hack Repair, Site Lock, …
Об этих сервисах можно почитать на странице “Как защитить вебсайт от хакерских атак“.
Мы раасмотрим два “ручных” способа. Первый более простой. Второй способ – более сложный. Второй способ применил, когда первый не помог.

К началу страницы

Как удалить вредоносное ПО с сайта WordPress вручную. Способ 1.

Ни сайт, ни административная панель сайта не открываются. Выдаётся сообщение:
Fatal error: Namespace declaration statement has to be the very first statement in the script in /home/content/81/12483581/html/wp-content/plugins/easy-table-of-contents/includes/inc.string-functions.php on line 3
Удалось преодолеть эту трудность, поработав с базой данных. Перечислю шаги.
Шаг 1. (Выполняется в административной панели Economy Web Hosting Linux GoDaddy) Отключить все плагины WordPress в базе данных (Disable WordPress plugins in the database), выполнив следующие действия:
– войтие в phpMyAdmin. Открывыется административная панель для работы с базой данных MySQL;
– выбрать (кликнуть) таблицу wp_options;
– найти запись active_plugins в столбце option_name. Она расположена на следующей странице с записями;
– кликнуть (нажмать кнопку) Edit (Изменить) для этой строки active_plugins. Откроется тестовое поле, содержащее информацию об активных плагинах.
– сохраним, на всякий случай, содержание текстовой строки с активными плагинами в текстовом файле. Для этого выделим весь текст, находящийся в поле option_value, скопируем его в буфер компьютера и вставим в текстовый редактор;
– после того, как текст был сохранен в безопасное месте, удалим (Delete) его из phpMyAdmin;
– кликнем кнопку Go, чтобы внести изменение в БД (Click Go to submit the change).
Можно повторно включить свои плагины в любое время, снова отредактировав запись active_plugins и вставив текст, который был ранее удален и сохранён в текстовом файле.
Тестовая строка, находящаяся в переменной option_value строки active_plugins:
a:16:{i:0;s:19:”akismet/akismet.php”;i:1;s:33:”classic-editor/classic-editor.php”;i:2;s:53:”contextual-related-posts/contextual-related-posts.php”;i:3;s:29:”link-library/link-library.php”;i:4;s:49:”mammoth-docx-converter/mammoth-docx-converter.php”;i:5;s:21:”megamenu/megamenu.php”;i:6;s:23:”ml-slider/ml-slider.php”;i:7;s:29:”pdf-embedder/pdf_embedder.php”;i:8;s:31:”styles-twentyfifteen/plugin.php”;i:9;s:17:”styles/styles.php”;i:10;s:45:”upload-max-file-size/upload-max-file-size.php”;i:11;s:24:”wordpress-seo/wp-seo.php”;i:12;s:16:”wp-edit/main.php”;i:13;s:31:”wp-google-maps/wpGoogleMaps.php”;i:14;s:37:”wp-rss-retriever/wp-rss-retriever.php”;i:15;s:30:”youtube-embed-plus/youtube.php”;}
После этой операции, и сайт, и админ панель открылись!!!
Шаг 2. Восстановить и активировать все необходимые плагины, но уже в административной панели WordPress веб сайта

Как удалить вредоносное ПО с сайта WordPress вручную. Способ 2.

Ни сайт, ни административная панель сайта не открываются. Выдаётся сообщение:
Warning: require(/home/content/81/12483581/html/wp-includes/blocks/calendar.php): failed to open stream: No such file or directory in /home/content/81/12483581/html/wp-includes/blocks/index.php on line 11
Fatal error: require(): Failed opening required ‘/home/content/81/12483581/html/wp-includes/blocks/calendar.php’ (include_path=’.:/usr/local/php5_6/lib/php’) in /home/content/81/12483581/html/wp-includes/blocks/index.php on line 11

Способ 1, то есть удаление активных плагинов в базе данных не помог. Пришлось воспользоваться вторым способом, то есть обновление всего веб сайта – и его файловой системы и базы данных. Создав, предварительно, резарвные копии и переустановив CMS WordPress, привязав её к зарезервированной файловой системе сайта и к базе данных сайта.
Перечислю основные шаги, которые нужно выполнить:
Шаг 1. Резервное копирование файлов сайта и базы данных.
Шаг 2. Загрузка и изучение файлов резервных копий.
Шаг 3. Удаление всех файлов в папке public_html
Шаг 4: Переустановка WordPress
Шаг 5. Reset Passwords and Permalinks
Шаг 6. Переустановка плагинов
Шаг 7. Переустановка тем (Themes)
Шаг 8. Загрузка изображений из резервной копии
Шаг 9. Сканирование своего компьютера
Шаг 10. Установка и запуск плагинов безопасности
Детально рассмотрим перечисленные шаги.

Шаг 1. Резервное копирование файлов сайта и базы данных

Создание резервной копии файлов веб-сайта вручную с помощью FTP. Это будет наиболее полная резервная копия всего вашего сервера. Сам процесс копирования займет время, так объём копирования может быть довольно большим. Копия может быть полезно, если нужно загрузить эту резервную копию в учетную запись хостинга другого типа.
Создание резервной копии базы данных, выполнив следующие действия.
Некоторые сайты могут быть довольно большими. Размер самого файла загрузки может превышать 1 ГБ. Папка wp-content – самая важная папка на вашем сервере, поскольку она содержит все ваши загрузки.
Примечание о файле .htaccess: сделайте резервную копию файла .htaccess и загрузите его. Вам может потребоваться резервная копия файла .htaccess на тот случай, если он содержит контент, который вам нужно будет скопировать обратно на ваш чистый сайт. Некоторые хосты используют .htaccess для определения используемой вами версии PHP, поэтому без этого сайт не будет работать правильно. Некоторые люди помещают 301 переадресацию SEO в свой файл .htaccess. Также файл .htaccess мог быть взломан, так что вам захочется изучить его позже.

Шаг 2. Загрузка и изучение файлов резервных копий.

После загррузки резервной копии веб сайта, она сдержит:
– Все файлы ядра WordPress. Можно скачать WordPress с WordPress.org, чтобы проверить загруженные файлы и сопоставить их со своими. Эти файлы вам на самом деле не понадобятся, но они могут понадобиться вам для дальнейшего расследования взлома.
– Файл wp-config.php, который содержит имя, имя пользователя и пароль для базы данных WordPress. Эти параметры используются в процессе восстановления.
– Файл .htaccess.
– Папка wp-content, в которой должны находиться как минимум три папки: themes, uploads и plugins. Эти папки содержат темы, плагины и загруженные изображения, соответственно. Наличие этих папок – это хороший признак того, что имеется хорошая резервная копия сайта. Обычно это единственная критически важная папка, необходимая для восстановления вашего сайта (в дополнение к базе данных).
– База данных – это файл SQL, который является экспортом вашей базы данных. Мы не собираемся удалять базу данных в этом процессе, но было бы хорошо иметь резервную копию.

Шаг 3. Удаление всех файлов в папке public_html

Убедившись, что имеется хорошая и полная резервная копия вашего сайта, нужно удалите все файлы в папке public_html (кроме папки cgi-bin и любых папок, связанных с сервером, которые явно не содержат взломанных файлов). Сделать это можно с помощью диспетчера файлов веб-хостинга, то есть с помощью File Manager. Это намного быстрее, чем удаление файлов через FTP. Обязательно просматривайте невидимые файлы, чтобы удалить все скомпрометированные файлы .htaccess.

Если у вас есть другие сайты, которые вы размещаете в той же учетной записи, вы можете предположить, что все они также были взломаны. Перекрестная инфекция является обычным явлением. Вы должны очистить ВСЕ сайты, поэтому сделайте резервную копию их всех, загрузите резервные копии и выполните следующие шаги для каждого из них. Я знаю, что это звучит серьезно, но, если серьезно, попытка отсканировать и найти все взломанные файлы на сервере абсолютно обременительна. Просто убедитесь, что каждая из ваших резервных копий завершена. И не следует просто чистить один веб-сайт, а затем неторопливо чистить другой, так как за время, необходимое вам для очистки одного, другой, который все еще заражен, может повторно заразить тот, который вы только что очистили. Относитесь к нему как к бубонной чуме.

Шаг 4: Переустановка WordPress

Используя программу установки в панели управления веб-хостингом, переустановите WordPress в каталоге public_html, если это было исходное место установки WordPress, или в подкаталоге, если WordPress был установлен в дополнительном домене.
При инсталляции новой версии WordPress использовал старый ЛОГИН. Возможно, что это плохо. Но всё работает
Перенёс папку _db_backups, содержащую последний бэкап базы данных. И выполнил операцию Restore базы данных в пустую, только что созданную базу данных во время установки нового экземпляра WordPress. Логин в новую базу данный получил из вновь созданного файла wp-config.php.
Не стал  загружать старый файл wp-config.php, так как новый имеет новые параметры шифрования для входа в систему и определенно будет свободен от взломанного кода.

Шаг 5. Reset Passwords and Permalinks

Войти (Login) на свой сайт и сбросить (reset) все имена пользователей и пароли. Был ещё один администратор, неизвестный. Удалил его.
Если вы видите незнакомых пользователей, значит, ваша база данных была взломана, и вам необходимо связаться со специалистом, чтобы убедиться, что в вашей базе данных не осталось нежелательного кода. В блоге Nuke it From Orbit, предлагается инструкция как убить свою старую базу данных и начать все заново. Это немного больше работы, но действительно гарантирует, что ваш сайт будет чистым.
Перейти в Settings > Permalinks и сохранить изменения пермалинка (Save Changes). Это сохранение восстановит (создаст) файл .htaccess, URL-адреса будут работать.

.htaccess файл

# BEGIN WordPress
# The directives (lines) between “BEGIN WordPress” and “END WordPress” are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

При удалении файлов на сервере убедитесь, что вы показываете невидимые файлы, чтобы не осталось ни одного взломанного файла .htaccess.
.htaccess – это невидимый файл, который контролирует множество вещей на сервере и может быть взломан для злонамеренного перенаправления людей с вашего сайта на другие сайты.
Не забудьте также восстановить пароли всех учетных записей FTP и хостинга.

Шаг 6. Переустановка плагинов

Переустановите все свои плагины. Решил установить тольк используемые плагины, которые поддерживаются разработчиками. Список плагинов сайта я нашёл: classic-editor, contextual-related-posts, easy-table-of-contents, link-library, mammoth-docx-converter, megamenu, ml-slider (?), pdf-embedder, styles-twentyfifteen (?), styles, upload-max-file-size (?), wp-edit, wp-rss-retriever, youtube-embed-plus (?). Знаком вопроса помечены не установленные по разным причинам.

Шаг 7. Переустановка тем (Themes)

Установите новую тему: Twenty Sixteen Version 2.4. Ранее использовал Twenty Fifteen.

Шаг 8. Загрузка изображений из резервной копии

Cкопировал старые файлы изображений в новую папку wp-content -> uploads на сервере.
Совет специалиста, который я НЕ выполнил: если вы не хотите копировать какие-либо взломанные файлы,  нужно внимательно изучить каждую папку года / месяца в своей резервной копии, заглянуть в каждую папку и убедиться, что есть ТОЛЬКО файлы изображений, а не файлы PHP или Файлы JavaScript или что-то еще, что вы не загружали в свою медиа-библиотеку. Это утомительно. Но только после этой инспекции, кагда были проверены папки для каждого года / месяца, можно загрузить их на сервер с помощью FTP.

Шаг 9. Сканирование своего компьютера

Для того, чтобы быть уверенным, что зараза на веб сайт не попала с компьютера, его нужно отсканировать на наличие вирусов, троянов и вредоносных программ.

Шаг 10. Установка и запуск плагинов безопасности

Установил и активировал плагин безопасности: WP Cerber Security, Anti-spam & Malware Scan. Согласно заявленному описанию, этот бесплатный плагин “Защищает WordPress от хакерских атак, спама, троянов и вирусов. Сканерует с целью выявления вредоносных программ (Malware) и проверки целостности (integrity checker). Укрепляет WordPress с помощью набора комплексных алгоритмов безопасности. Защищает от спама с помощью сложного механизма обнаружения ботов и reCAPTCHA. Отслеживает активность пользователей и злоумышленников с помощью мощных уведомлений по электронной почте, на мобильных устройствах и на рабочем столе.

Источники

https://wordpresslab.ru/instrukcii/bezopasnost-wordpress/
https://askwpgirl.com/10-steps-remove-malware-wordpress-site/
https://askwpgirl.com/nuke-it-from-orbit/

К началу страницы




К началу страницы

Author: Олег Якупов

Я отношусь к той категории советских людей, которых называют "Ташкентскими русскими". Это эндемики, сохранившие в окружении инородной культуры своеобразную русскую, еще дореволюционную культуру, и прежде всего, язык. А так же впитавших в себя много хорошего из окружавшей нас по жизни восточной культуры. Еще нас называют "Совками". Но это относится не только к бывшим жителям гостеприимного Ташкента, но к жителям всего Советского Союза, сформировавшимся, как личности, во времена Советского Союза. Многих из нас судьба разбросала по всему Земному шару. Нам не хватает привычного общения. Наши дети и внуки, помимо своей воли, становятся "иностранцами". Блог – это то место, где я смогу выговориться, а если повезет, то и поговорить с людьми моего поколения. Спасибо Интернету, он предоставляет нам такую возможность.