Get it on Google Play

Virus en PHP

10-04-2012
 

Están apareciendo cantidad de virus que se aprovechan de la falta de seguridad de PHP para incrustarse en nuestras páginas. (Que nadie me llame ahora anti-php, por favor)

Algunos de los mas molestos son los que se dedican a insertar código en la primera línea de cada fichero PHP, así consiguen que lo primero que se ejecute de cada fichero sea un script malicioso que hace de las suyas. Son fáciles de identificar, la primera línea de tu codigo siempre serà algo así: ‘<?php eval(base64decode(“Aquí un chorron de código en base64”)); ?>’ (Esta primera línea, codificada en base64 es el código malicioso).

En Internet he visto varias soluciones, pero ninguna me ha dado muy buenos resultados. Finalmente, he desarrollado este script en PHP para limpiar todos los ficheros de esta ‘xunga’ cabecera(Limpia todos los ficheros de la carpeta y subcarpetas):

[clean.php]
<?php
$handle = opendir('.');
cleanDir( "." );

function cleanDir($dir) {
  echo "[".$dir."]<br/>\n";
  $files1 = scandir($dir);

  for ( $i=2; $i<count ($files1); $i++ ) {
    $entry=$files1[$i];

    if ( substr($entry,-4)==".php" ) {
      echo $dir."/".$entry."<br/>\n";
      $f=file_get_contents($dir."/".$entry);

      $pos = strpos($f, "eval(base64_decode");
      $pos2 = strpos($f, "\n");
      $pos3 = strpos($f, "?>");
      if ( $pos!==false ) if ( $pos<$pos2 ) {
        file_put_contents( $dir."/".$entry.".old",$f );
        $f=substr( $f, $pos3+2 );
        file_put_contents( $dir."/".$entry,$f );
        }
      }

    if ( is_dir( $dir."/".$entry ) ) {
      cleanDir( $dir."/".$entry );
      }
    }

  }
?>

Este script elimina las cabeceras y crea una copia del antiguo con terminación ‘.php.old’. Finalmente, para saber si a funcionado correctamente, podéis ejecutar ‘grep -R -n “eval(base64_decode” *.php’ y ver cuantos ficheros de PHP tenéis con esta cabecera.

Atención!! Usad el script bajo vuestra responsabilidad y haced antes una copia de seguridad. Espero que os sea de utilidad.

 

Comments

5 Responses to “Virus en PHP”
  1. […] hay varias soluciones, pero muchos comentan que ninguna ha dado muy buenos resultados. Finalmente, Alberto Coronado ha desarrollado este script en PHP para limpiar todos los ficheros (Limpia todos los ficheros de la […]

  2. Eladio says:

    Muy buen artículo. Me tomé la libertad de reescribirlo para suplir una necesidad propia, ya que mi servidor fue atacado y me encontré una variante es este malicioso código, que además de atacar las cabeceras de los scripts php también inserta adicionalmente código en otros lugares del script.

    Aquí el enlace en mi blog con la modificación. Espero les sirva. A Albert Coronado, muchas gracias por el aporte.

    http://egilmoreno.wordpress.com/2013/04/20/virus-en-php/

  3. Hola Eladio, gracias por la aportación. Un abrazo.

  4. enric says:

    el modo de uso es simplemente ejecutar el archivo clean.php o debemos pasar algún parámetro adicional como el directorio?

    gracias

  5. Si Enric, ejecutar el clean.php y ya esta.

Leave a Reply