Сканирование базы данных на наличие вредоносных данных
После того, как сайт моего друга был взломан, я посоветовал ему очистить весь беспорядок и начать с нуля, чтобы быть уверенным, что ни один файл не был изменен.
Я мог бы просканировать сайт для него с помощью таких инструментов как grep и подобных (Для начала: Grep и его аналоги), но меня интересует, как просканировать базу данных? Что если хакер разместил вредоносный код внутри базы данных? Это может быть что-то простое вроде XSS или даже PHP-код в случае, если в ядре все еще используется eval (или использовался на момент взлома).
Есть какие-нибудь предложения? Я думал об использовании SQL-запросов с функцией сравнения LIKE или даже о возможности использования REGEX. Но может быть, кто-то уже делал это или хочет сделать и готов поделиться своими идеями.

Я читал, что выгрузка базы данных в текстовом формате и поиск по ней — это хороший способ. Можно искать через phpmyadmin, но там ограничения. Всё зависит от размера базы данных и хорошего текстового редактора, но можно удалить ревизии записей/страниц перед выгрузкой, чтобы уменьшить размер. Или выгружать по несколько таблиц за раз.

Удаление ревизий перед сканированием кажется мне хорошей стратегией. Я спрошу у друга, нужны ли они ему. У тебя есть советы по поисковым строкам? Но перед тем как спрашивать, думаю, мне стоит сделать домашнее задание и загуглить известные уязвимости, возможно, я даже ссылался на некоторые из них в своем блоге.

Я бы искал стандартные строки типа eval(base64_decode
. Также, если просмотреть исходный код сайта и обнаружить спам-ссылки, можно поискать по ним. http://sucuri.net/ отслеживает вредоносные строки, связанные с WordPress.

Все мои сайты на одной учетной записи были заражены скриптом Decode_Base64, который инфицировал множество php-файлов. Несмотря на то, что очистка одного сайта заняла несколько часов, он был повторно заражен всего через несколько часов.
В итоге я загрузил папку wp-content/uploads и другие файлы, обновляемые вручную, используя безопасное FTP-соединение.
Я также сделал резервные копии и заметки о темах, плагинах и других кастомизациях, которые нужно будет применить повторно.
Затем я изменил все пароли учетной записи/FTP, вручную изменил пароли баз данных и пользователей через phpMyAdmin, чтобы ограничить доступ при восстановлении сайтов.
Далее я удалил ВЕСЬ код WordPress со ВСЕХ сайтов и загрузил вместо этого простой index.html файл с сообщением о том, что сайты находятся на техническом обслуживании.
Я проверил папки WP-content/uploads на наличие любых файлов, кроме изображений или моего собственного контента, особенно ища скрипты (которых там быть не должно).
Затем скачал последнюю версию WordPress, настроил её для существующей базы данных с новым паролем и загрузил на сервер.
Зайдя на сайт, на котором в этот момент активен только Akismet, проверил и удалил всё, чего там быть не должно (страницы, записи, ссылки и т.д.).
Установил плагин для резервного копирования, чтобы убедиться, что есть бэкапы базы данных и папок.
Установил плагин Bulletproof-Security (или аналогичный), который создает защищенные .htaccess файлы и подсказывает, как обезопасить файлы и папки. Следовал его рекомендациям.
Наконец, постепенно применил свои кастомизации снова.
Если у вас несколько доменов, повторите процесс по мере необходимости.
В моей ситуации я как раз планировал переезд на новый хостинг, поэтому, проделав всё это, я сохранил всё по каждому сайту и воссоздал их на новом хосте, убедившись, что восстановленная старая версия чиста.
Удачи, надеюсь, это поможет.
