Как я могу найти и заменить все файлы рекурсивно, чтобы удалить какой-то мошеннический код, внедренный в файлы php при установке WordPress? - PullRequest
1 голос
/ 15 марта 2012

Как я могу найти и заменить все файлы рекурсивно, чтобы удалить какой-то мошеннический код, внедренный в php-файлы при установке WordPress? Хакер добавил некоторый код (ниже) ко ВСЕМ файлам .php в моей установке WordPress, и это происходит довольно часто со многими сайтами, и я часами вручную удаляю код.

Сегодня я попробовал несколько методов, которые нашел в Интернете, но безуспешно из-за длинного фрагмента кода и множества специальных символов в нем, которые запутывают разделители. Я пытался использовать разные разделители с Perl:

perl -p -i -e 's/rogue_code//g' *

до

perl -p -i -e 's{rogue_code}{}g' *

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

Большое спасибо ... вот код:

< ?php /**/ eval(base64_decode("aWYoZnVuY3
... snip tons of this ...
sgIH1lbHNleyAgICB9ICB9"));? >

Ответы [ 3 ]

1 голос
/ 15 марта 2012

и это случается довольно часто на многих сайтах, и я часами вручную удаляю код ....

Похоже, вам нужно лучше убрать взломать илисменить хостов.Замените все основные файлы WP и foldere, все плагины, а затем все, что вам нужно сделать, это найти файлы тем и wp-config.php для внедренных скриптов.

См. Как полностью очистить ваш взломанный WordPressустановка и Как найти бэкдор во взломанном WordPress и Укрепление WordPress «Кодекс WordPress и Рекомендуемый WordPress веб-хостинг

1 голос
/ 15 марта 2012

Без шанса самому покопаться в файлах, трудно быть уверенным;но это звучит так, как будто вам нужно:

find -name '*.php' -exec perl -i -pe 's{<\?php /\*\*/ eval\(base64_decode\("[^"]+"\)\);\?>}{}g' '{}' ';'

(Тем не менее, я согласен с вышеупомянутыми комментаторами, что попытка исправить ущерб, по частям, после того, как это произошло, не лучшая стратегия.)

0 голосов
/ 15 марта 2012

У меня та же проблема (Dreamhost?), И я сначала запускаю сценарий clean.pl:

#!/usr/bin/perl
$file0 =$ARGV[0];
open F0,$file0 or die "error opening $file0 : $!";
$t = <F0>;
$hacked = 0;
if($t =~ s#.*base64_decode.*?;\?>##) {
    $hacked=1;
}
print "# $file0: " . ($hacked ? "HACKED" : "CLEAN") . "\n";
if(! $hacked) {
        close F0;
        exit 0;
}

$file1 = $file0 . ".clean";
open F1,">$file1 " or die "error opening $file1 for write : $!";
print F1 $t;
while(<F0>) {
 print F1;
}
close F0;
close F1;
print "mv -f $file0 $file0.bak\n"; #comment this if you don't want backup files.
print "mv -f $file1 $file0\n";

с find . -name '*.php' -exec perl clean.pl '{}' \; > cleanfiles.sh и тогда я бегу . cleanfiles.sh

Я также обнаружил, что были и другие зараженные файлы (заражающие вирусы «boostrap», которые вызывали другую инфекцию), которые вместо вызова base64_decode имели некоторую команду с шестнадцатеричным кодированием ... 1010 *:

#!/bin/sh
#  prints filename if first 2 lines has more than 5000 bytes
file=$1
bytes=`head -n 2 $file | wc --bytes `
if (( bytes > 5000 ))
then
  echo $file
fi

А потом: find . -name '*.php' -type f -exec ./suspicious_php.sh '{}' \;

Конечно, все это совсем не надежно.

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