ANUNCIOS
Imagen de ArticuloUn dolor de cabeza

Como limpiar una inyección de código en javascript haciendo uso de PHP

En ciertas ocasiones, tenemos la mala fortuna de encontrarno que nuestra web fue bloqueada debido a que su código fue manipulado por un tercero. Esta práctica es conocida como inyección de código y nos causa un gran dolor de cabeza.

Todo archivo de texto en nuestra servidor puede ser infectado, existiendo inyecciones de código en javascript (Js), Html, Php, entre otras. Es relativamente fácil identificar el tipo de archivo infectado, pero por las circustancias puede ser complejo eliminar el script de toda la web.

Por ejemplo, hace unas semanas realicé la limpieza de un sitio web desarrollado en Joomla. En un prinicipio inicié haciendo la tarea de manera manual, pero esta tarea se hace realmente repetitiva y aburridora luego de 20 archivos limpiados. Por lo cual desarrolle un script en php que realizara esta tediosa tarea.

El primer paso para eliminar la inyección del código es saber que codigo inyectaron y que tipo de archvio fueron modificados. por lo general todos los archivos de una misma extensión están infectados.

Por ejemplo, hagamos la suposición que el codigo inyectado es ";document.write('Hola Mundo');" y que fueron infectados todos nuestros archivos de extensión JS, por lo cual tendremos que recorrer recursivamente los directorios del sitio.

El siguiente script hay que modificarlo según las necesidades.

 

 

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html>
<head>
<meta name="tipo_contenido" content="text/html;" http-equiv="content-type" charset="utf-8">
</head>
<body>
<?php

function limpiar($archivo){
$fichero_texto = fopen ($archivo, "r");
$contenido = fread($fichero_texto, filesize($archivo));
fclose ($fichero_texto);

/*En res ponemos el codigo que queremos eliminar*/
$res = str_replace(";document.write("Hola Mundo");" ,'', $contenido,$count);
if($count > 0){

echo "... Infectado<br/>";
$fp = fopen ($archivo, "w");
fwrite( $fp,$res);
fclose ($fp);

}else
echo "... Limpio<br/>";

}


function extension($archivo){
$ext=explode(".",$archivo);
$num=count($ext)-1;
return trim($ext[$num]);
}

function scanDirFiles($dir){
$directorio=opendir($dir);
while ($archivo = readdir($directorio)){
if($archivo != '.' && $archivo != '..'){
if(is_dir("$dir/$archivo")){
$newDir = "$dir/$archivo";

scanDirFiles($newDir);

/*Aqui cambiamos la extension del archivo que queremos examinar*/
}else if(extension($archivo) == 'js'){
echo "Limpiar: $dir/$archivo ";
limpiar("$dir/$archivo");
}

}

}

closedir($directorio);
}

$path = dirname(__FILE__);
echo "<b> Directorio: $path </b><br/>";
scanDirFiles($path);
?>
</body>
</html>

 

Es importante que cambiemos las credenciales de autenticacion de todo el sitio, lo que incluye los datos de ftp y  gestor de contenido(Joomla, Wordpress, Etc) 

 


Etiquetas:   FTP   INYECCION DE CODIGO   JAVASCRIPT   JOOMLA   LINUX

Articulos Relacionados
Publicidad
Comentarios
comments powered by Disqus