Cómo limpiar un sitio en WordPress infectado

Así se ve un archivo infectado de WordPress

Hola gente! Hace un año que no escribo nada. Voy a utilizar este evento cósmico de excusa para revivir el blog, o al menos intentarlo. ¿Alguien aún lee blogs?

Se me ocurrió el tema del título porque es una pregunta que veo constantemente en foros, grupos de Facebook, Quora y conversaciones en bares… bueno no, esto último no, al menos no los que yo frecuento.

Como todos saben WordPress es el CMS mas utilizado en el mundo y por este tema es un target tentador para cualquier ataque automatizado. Cuando te infectan un WordPress en general, el 99% de las veces, no es algo personal contra vos y tu sitio. Son ataques de fuerza bruta o escaneos en busca de vulnerabilidades. Cuando encuentran una versión de WP, theme o plugin con una vulnerabilidad conocida atacan, infectan y hacen lo suyo. No pienses que es culpa de tu hosting, salvo raras excepciones, no lo es.

Todo lo que les voy a contar es experiencia propia. Como soy parte de una empresa de Hosting he tenido que hacer esto infinidad de veces desde que existe WordPress. (bueno, en realidad desde que salió PhpNuke je)

Hay otras formas de hacerlo, mucho de lo que acá les cuento lo hago por consola por ejemplo. En este caso voy a tratar de explicarlo para que lo pueda hacer cualquier vía FTP.

Ok, vamos al grano

Para realizar todas las taréas tenes que tener algo de conocimientos básicos sobre desarrollo web o al menos haber instalado WordPress a mano. Si sos el usuario final de un WordPress que solo entra a publicar cosas mejor consultá con quién te realizó la web. Estos pasos son genéricos y curan casi todas las infecciones. Demás está decir que por las dudas de que hagas mierda todo mas de lo que está hagas un buen backup.

Cambiar la contraseña de tu panel de control y/o FTP

Este es un gran «por las dudas» o «mas vale prevenir», existe una posibilidad de que el hack haya sido por una clave insegura o filtrada. Ante la duda lo mejor es cambiar la clave del panel de control que te brinde tu hosting y si tenes cuentas de FTP adicionales también cambiales la clave.

Desactivá el acceso público a la web

Si tu web lleva varios días infectada es probable que Google ya haya marcado como peligroso tu sitio. Hay que decirle a Google desde la Search Console que tu sitio ya no está infectado. Como esto tarda es bueno que sea lo primero que hagas, para ello necesitas limpiar el sitio y como eso puede demorar vamos a evitar que se pueda ver. Lo que debes hacer es eliminar el index.php y el archivo .htaccess (crea una copia de este si tiene algo mas que lo que mete WordPress) de la raiz de tu sitio y crear un index.html o index.php en blanco. Si te das maña podes hacer un html con los dátos básicos de contacto de la web infectada para que un eventual visitante no vea la página en blanco. Una vez hecho todo esto ya le podes pedir a Google que vuelva a revisar tu sitio en busca de malware.

Elimina todos los archivos de WordPress excepto wp-content

Esto lo podes hacer utilizando FTP pero es lento porque son muchos archivos chiquitos. Lo ideal es hacerlo desde el panel de control de tu hosting si te dan un administrador de archivos. Elimina todos los archivos de la raiz y los directorios wp-admin y wp-includes. Con esto nos cargamos cualquier infectado que haya habido en esas carpetas.

Limpieza de wp-content

Este es el único directorio que conservamos porque tiene los archivos que no son genéricos de cualquier instalación. Themes, plugins, modificaciones, archivos subidos, etc. Los últimos hackeos que vi son ultra virulentos por lo que podes tener archivos desconocidos con malware, archivos conocidos con malware inyectado, incluso hasta archivos que simulan ser imágenes con malware infectado. Revisá que en la raiz de wp-content no tengas ningún archivo desconocido y mira dentro de los conocidos que no haya nada extraño. Normalmente solo deberías tener un index.php con un comentario.

Es el turno de /plugins. Toma nota de todos los plugins instalados, y bajalos del repositorio de WordPress uno por uno. En tu escritorio hacete una nueva carpeta /plugins y descomprimi todos los archivos que bajaste ahí dentro. Luego solo te queda eliminar /plugins la del sitio infectado y subir la nueva de tu escritorio.

Ahora vamos con la carpeta /themes. Si el theme que estas usando es del repositorio o comprado y no tiene modificaciones caseras tenes volverlo a descargar y reemplazarlo integramente, como hicimos con los plugins. Si lo modificaste sin usar un child entonces tenes que mirar uno por uno los archivos para ver que dentro no haya malware. Es bastante obvio cuando están infectados aunque no sepas mucho de PHP.

Si tenes un child, que es lo mas correcto cuando modificas el theme original, tambien debes revisar todos tus archivos a mano en busca del bicho.

Si tenes themes que no estas usando es un buen momento para borrarlos, tenerlos ahí es un riesgo innecesario.

Por último solo nos queda la carpeta /uploads, dependiendo de la cantidad de contenidos del sitio puede ser mas o menos tedioso. El trabajo a realizar aquí es ir entrando uno por uno en todos los años y meses buscando archivos que no corresponden. Normalmente algún php entre muchas imágenes. Puede ser útil ordenar por fecha y/o por extensión los archivos dentro de cada carpeta para detectar rápidamente.

Por último, si tenes un buen hosting, como Bee por ejemplo, cof cof… dentro del cPanel vas a encontrar un scanner de malware. Correlo para ver si detecta algún archivo infectado que se te haya pasado por alto.

Algunos ajustes sobre la base de datos

Este paso también es un «por si las dudas». Primero vamos a ingresar al panel de nuestro hosting y cambiamos la clave del usuario de la base de datos. No la pierdas! Si estás canchero con phpmyadmin otra cosa que podés hacer es ver si en la tabla de usuarios no aparece algun invitado desconocido. Si hay, borralo.

Puesta en marcha

Este es el paso mas «placentero» para mi, es el momento de volver a poner en marcha todo el quilombo que hicimos mas arriba. Lo primero es descargar la última versión de WordPress. Si no te da confianza un upgrade de golpe podes buscar en el repo la versión anterior de WordPress que hayas tenido en la web.

Descomprimí el archivo descargado en tu escritorio y eliminá la carpeta wp-content. No la vamos a necesitar. Renombrá el archivo wp-config-sample.php a wp-config.php y completá los datos de la base de datos, no olvides que cambiaste la clave. Usa el link que viene en el archivo para generar unas llaves salt nuevas y pegalas. Por último si tus tablas tenían un prefijo distinto al estandard no olvides cambiarlo ya que si no lo haces cuando quieras ver tu sitio va a querer instalar un nuevo WordPress.

Una vez terminado con el wp-config.php es momento de subir todos los los archivos al hosting. Al finalizar si todo salió bien deberías poder ingresar a tu /wp-admin.

Últimos pasos

Una vez dentro de backend de WordPress lo primero que debes hacer es cambiar la clave a TODOS los usuarios con permisos de administrador, editor y autor. Pone la clave mas cojuda que puedas, la mejor clave es la que no te podes acordar. Utilizá un gestor de contraseñas como LastPass.

Revisa todas las entradas y páginas para que no haya cosas raras. En varias ocasiones me he encontrado con páginas o posteos intervenidos con links a sitios de venta de medicamentos y otras bizarreadas. Todo lo que no sea el contenido habitual de tu web volalo a la mierda. Si quedó algún plugin que pide actualización, hacela.

Ya deberíamos contar con un sitio limpio. Vas a tener que controlarlo de cerca unas semanas, ya que si quedó algún chobi se puede volver a infectar. A veces puede pasar por ejemplo que tengas algún plugín o theme desactualizado y no soportado, por más que pongas uno no infectado este podría tener vulnerabilidades conocidas y volver a infectarse. Si es el caso, googlea acerca de ese plugin o theme y trata de arreglarlo y/o reemplazarlo.

The end

Espero les haya sido de utilidad este post, la verdad que me tomó un buen tiempo escribirlo. Si tienen alguna consulta, usen los comentarios, trataré de responderlas en tiempo y forma.

Hola amigos! Estoy haciendo muchos cambios en mi blog. Luego de un tiempo de abandono (ya les contare por qué) instalé la última versión de WordPress (3.2) y me encantaron sus cambios. Ahora mismo estoy arreglando el theme Twenty Eleven para ustedes.

Usar el thumbnail de wordpress con Facebook XFBML

Hace una semana decidí eliminar todos los plugins relacionados con Facebook Yummie y hacer la implementación a mano usando el protocolo Open Graph y los tags XFBML para insertar los plugins de facebook. Uno de los problemas que me encontré es que cuando alguien recomendaba una nota la imagen que Facebook levantaba para usar como ícono podía ser cualquier al azar.

En el siguiente ejemplo podemos ver como se comportaba Facebook cuando la gente recomendaba un post:

Como pueden ver me tomó en dos ocasiones el icono de comentarista sin avatar, una publicidad y una manito negativa de las imágenes para votar los comentarios. Por razones obvias esto no sirve, especialmente porque esto también se ve reflejado en el perfil de facebook del usuario que recomienda.

Para solucionarlo recurri a un meta tag ya conocido de Open Graph, el «og:image» que indica a facebook que imagen hay que usar para esa acción. Hay que agregar una linea que dice así:

< meta property="og:image" content="URL DE LA IMAGEN" />

El problema mayor de esto es que no anda la función standard para mostrar thumbnail en wordpress

< ?php the_post_thumbnail(); ?>" / >

Y si anduviese, la salida de esa función sería la url con el tag IMG, por lo tanto tampoco nos sirve. Para sortear este problema tuve que recurrir a algun un poquito mas complejo.

< ?php $src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), array( 90,90 ), false, '' ); echo $src[0]; ?>

En este caso lo que hacemos es volcar la URL de la imagen del thumbnail a una variable y mostramos esa variable. Un problema que aun no resolví es hacer que esta funcion me de un thumb de tamaño específico y no el que hace por defecto WordPress.

Para finalizar el metatag de Open Graph debería quedar así:

< meta property="og:image" content="ID), array( 90,90 ), false, '' ); echo $src[0]; ?>" />

Gracias a esto ahora cuando alguien recomiende un post, este saldrá en Facebook con la imagen destacada que hayamos especificado en el post.

Ahora siii!

Se agradece cualquier ayuda para poder tomar la URL de un thumb de tamaño específico.

HOYGAN! Nuevo tema

Bueno, eso, tengo un nuevo theme funcionando en el blog que me gustó mucho. El anterior no estaba nada mal, pero este me gusto más. Si alguien quiere bajarlo pueden hacerlo de la pagina Digital Nature. Si encuentran alguna cosilla que deba corregir me avisan, yo ando traduciendo algunos textos que se olvidaron sin traducir.

Tiene tantas funcionalidades que no se si le voy a sacar provecho a todo. Vale la pena probarlo.

Nueva colaboradora en Yummie

Tengo el agrado de informarles que el día de hoy salió publicada la primer crítica en Yummie de nuestra flamante colaboradora, María (Es Varda para todo el mundo pero a mí aun me cuesta ese nombre). Ella estará encargada de las críticas mas orientadas al rubro nocturno cubriendo los lugares a los que tal vez nosotros no concurrimos habitualmente por nuestra situación de aburguesados, viejos o casados je. Esto no quita que también haga críticas de restaurantes, cafés y otros lugares diurnos así que propietarios tengan cuidado, otro representante de Yummie anda suelto.

Para los que aún no se enteran, Yummie es un blog/sitio donde mi amigo Rodrigo y yo escribimos y criticamos los distintos lugares a donde vamos a comer. Con el tiempo pretendemos ser la mejor y mas completa guía gastronómica de Mar del Plata.

Les dejo un link a la primer crítica de Varda.

Yummie Vardita

El mejor cache para tu WordPress: DB Cache

Hasta el momento estuve usando varios sistemas de cacheo para mi blog. Primero empecé utilizando WP Cache y hasta hoy usaba WP Super Cache. No digo que sean malos pero encontre algo mucho mejor y se llama DB Cache.

A diferencia de los otros cache’s que almacenaban las paginas en html, este lo que hace es cachear todas las querys de la base de datos con lo que logra un ahorro en el consumo de recursos importante en el server, además de la velocidad al mostrar la pagina. Otro de los beneficios es que los datos cacheados ocupan muy poco lugar.

Lo vi en este post de David Walsh donde nos muestra como optimizó su website.

¿Que plugins de WordPress estoy usando?

Hace unos instantes Mariano propone en su blog una discusión acerca de que plugins para wordpress usamos o recomendamos. Como tengo ganas de explayarme bastante voy a contestar con un post aclarando por que uso cada uno.

Askimet

Este no necesita explicación, si queres deshacerte de la mayoría de los comentarios con SPAM este plugin es lo mejor. Ademas viene con todas las instalaciones de WP. Link

Broken Link Checker

Indispensable, cuanto antes lo instales mejor. Este plugin revisa que todos los links en tus posts funcionen correctamente. Yo lo puse luego de años de tener el blog y encontré muchos links rotos. Lamento no haberlo tenido desde el principio. Link

Contact Form 7

Sin dudas el mejor generador de formularios para tu blog. Indispensable. Link

Dean’s Permalinks Migration

Hace unos meses cambié la estructura de mis links de /fecha/nombrepost a /nombrepost. El plugin este me mantiene vivos los links viejos para el trafico que llega de google y links de otras webs. Link

FeedBurner FeedSmith

Lo mejorcito para redirigir los RSS a FeedBurner. Link Continue reading

Nuevo diseño para este blog

Que flor de plantilla encontré. Desde hace unas semanas venia planeando diseñar una nueva plantilla para mi blog. Yo quería algo con los textos mas claros y minimalistas. No es que el iNove estuviera mal pero no era lo que necesitaba. Unos dias antes de ponerme a trabajar me crucé con esta plantilla maravillosa llamada youare que prácticamente tiene todo lo que necesitaba y es muy personalizable. Creo que es la plantilla ideal para cualquier blog personal ya que viene con conexión a Flickr y Twitter entre otras cosas.

Ahora lo que me queda por hacer es limpiar las categorías, creo que necesito menos y mas generales. Tantas distintas distraen un poco ¿no? Tengo todas estas categorías:

* Apple * Argentina * Autos * Celulares * Cine * Cpanel * Curiosidades * Deportes * Economia * El Mundo * Fotografía * General * GNU * Habari * Hardware * Humor * Internet * Juegos * Linux * Mar del Plata * Musica * Personal * Publicidad * Software * Tecnologia * TV * twitter * Videos * WordPress

Tengo pensado resumirlas en esto:

  • Tecnología
  • Cine
  • Musica
  • Desarrollo
  • Humor
  • Variedad
  • El Mundo
  • Internet
  • Argentina

¿Alguna sugerencia?

Plagio 2.0

Así es, hace unos meses nosotros realizamos un lindo theme de WordPress basándonos en Beautyfull Day para una empresa de turismo de la ciudad de Mar del Plata. El sitio que nosotros hicimos es http://www.barbiericunill.com

El día de hoy por medio de reffers vemos que recibimos visitas misteriosamente desde un site de la competencia, parece ser que algún diseñador falto de ideas ha bajado la home page que nosotros creamos y esta experimentando con ella, han tomado nuestro código completamente con NUESTROS links y todo para adaptarlo al site de su empresa. Obviamente se ve todo roto por que aun no se robaron el CSS, pero supongo que estan en eso. Es tan alevoso que hasta tienen las mismas promociones de turismo!!!

Les dejo imágenes del tema, el plagio en construcción y el sitio original.

WordPress 2.5

Hoy actualicé el Blog a la nueva versión de WordPress, la 2.5. La verdad esta muy bueno el nuevo manejo de imágenes y la creación de galerías. Entre otras cosas, el dashboard fue completamente renovado, ahora de puede hacer multiple upload de archivos con barra de progreso, administración de tags y muchas cosas mas.

Todos mis plugins siguen funcionando sin problemas y los templates también.
Lo único que me queda es esperar el archivo de lenguaje actualizado ya que al usar el de las versiones anteriores hay términos que aún no fueron traducidos.