У меня есть клиент с несколькими установками WordPress, которые он не обновлял. В результате его взломали. Хотя я пытаюсь найти, как взломали хакеры, и устранить проблему навсегда, я пытаюсь создать скрипт, чтобы исправить их быстро, автоматически.
Я нашел этот скрипт, который делает то, что я хочу: http://designpx.com/tutorials/wordpress-security/
Он автоматически удаляет <?php eval(base64_decode("aWY..."); ?>
Из каждого php-файла, но регулярное выражение, которое оно использует для этого, также удаляет <?php get_header(); ?>
Если оно следует вредоносный код.
Итак, я хочу изменить его, поэтому он удаляет только вредоносный код, но не первую строку php-кода. Вот часть скрипта, который выполняет замену:
find $dir -name "*.php" -type f \ |xargs sed -i 's#<?php /\*\*/ eval(base64_decode("aWY.*?>##g' 2>&1
Что мне нужно изменить, чтобы оно остановилось при первом ?>
, А не на втором?
Примечание . Я знаю, что это быстрое временное исправление, но оно будет действовать до тех пор, пока клиент не решит, какие сайты он хочет исправить, а что удалить.
Помимо комментариев, рекомендующих переустановить, вопрос регулярного выражения может быть жадностью. .*?
placeholder должен соответствовать кратчайшему количеству символов, но sed
может иметь некоторые ограничения относительно длины строки и т. д. (не уверен.)
Но для ограничения этого вы могли бы использовать [^>]*
на своем месте:
's#<?php /\*\*/ eval(base64_decode("aWY[^>]*?>##g'
Это гарантирует, что он не сможет выполнить закрытие ?>
. В любом случае, base64
не может содержать этого.
Нет необходимости в каких-то сумасшедших сценариях и много чего. Hacks на PHP не могут работать, если файл не заражен. Снятие решения проблемы.
И да, это возможно, даже если у вас несколько установок WordPress на одном сервере (ПОЧЕМУ ?!).
Создайте резервную копию всего и сканируйте его с помощью антивируса. На вашем сервере удалите все wp-файлы, кроме wp-config.php, затем перейдите на страницу wordpress.org, чтобы загрузить последнюю версию. Извлеките компьютер и загрузите его.
Проверьте файлы резервных файлов для заражения.