(Atención: artículo que lidia con los problemas que he tenido con el blog últimamente, sus posibles causas y la forma de arreglarlo, por si a alguien le ocurre algo igual. El lector que se aburra con los aspectos técnicos haría bien en saltarse este artículo si no desea morir del sopor.)
Dejo esto aquí por si a alguien le ocurre lo mismo que me pasó a mí en el blog hace unos días. Después de dar un puñado de palos de ciego al principio, finalmente conseguí encontrar información útil que me permitió arreglar el desaguisado completamente (o eso creo).
El 30 de octubre, un amable comentarista me avisa de que un artículo aparece coronado por un porrón de enlaces de spam farmacológico. Yo, en ese momento, lo achaco a la nueva sección en la barra lateral de “Últimos comentarios” y dejo la pregunta planteada. Más adelante me confirman que no, que realmente es texto dentro del artículo, y pido ayuda.
El primer comentario de esa petición de auxilio es de una persona que se ofrece a mandarme una captura de pantalla (junto a estas líneas) de esos famosos enlaces, que él ha sido capaz de verlos, y me la envía al correo (por lo que le estoy bastante agradecido). A partir de ahí, empiezo a buscar qué diablos ha pasado.Tras encontrar algunos trozos de código sospechoso en lugares donde nunca deberían estar, me pongo a rebuscar por Internet, a ver si alguien tiene experiencia solucionando algo parecido. Encuentro una entrada algo antigua pero con cerros de información valiosa: Wordpress exploit: we been hit by hidden spam link injection. Desde ahí también llego a How to find a backdoor in a hacked WordPress.
La historia puede contarse de forma muy sencilla: aprovechando algún fallo de seguridad en la instalación de mi blog, alguien introdujo código que hacía que cada vez que Google (u otro buscador) accediese a mi blog, además de mi texto también aparecería una miríada de enlaces a páginas que venden pastillicas azules de la risa, con el objetivo de conseguir unas cuantas referencias más y mejorar su posición en el buscador. Pero eso, en principio, sólo deberían verlo los buscadores. ¿Por qué lo veían los lectores entonces?
La gracia de todo el asunto (y lo que ha permitido que la gente se diese cuenta) es que yo tengo instalado un plugin que permite que las páginas se generen una sola vez y se guarden físicamente en el disco, para no tener que estar creándolas de forma dinámica cada vez que alguien accede a ellas (antes usaba wp-cache y ahora me he pasado a wp-super-cache). Cuando daba la casualidad de que un buscador llegaba a la página y generaba el código estático que se guardaba, ese mismo código era el que veía un lector que llegase inmediatamente después de forma que algunas de las páginas ensuciadas quedaban a la vista del público. Al menos esa es mi hipótesis.
¿Cómo ha podido llegar a ocurrir esto? En principio, ni idea. Aventurándome un poco, la versión de WordPress que yo utilizaba no pudo ser: era la 2.0.11, la última de la rama 2.0, que en teoría se sigue actualizando hasta 2010. Si aparece un fallo de seguridad, saldría la 2.0.12. No ha sido así. En resumen, yo me inclino por pensar que ha sido alguno de los plugins que tenía instalados, muchos de los cuales sí estaban en un estado de actualización lamentable. De hecho, en uno de ellos había código más que sospechoso.
No solamente en el código: también en la tabla wp_cache (realmente uso otro prefijo que no es wp_, por si las moscas) de la base de datos aparecía guardado, como texto, un montón de código en PHP dado la vuelta (algo completamente satánico) para no poder realizar búsquedas normales en su interior. En realidad, WordPress no tiene una tabla wp_cache, ni ninguno de los plugins que utilizo. Otra cosa que había que finiquitar.
Varias cosas que he aprendido mientras arreglaba esto y me hartaba a leer documentación:
- Los directorios donde normalmente se instalaría código malicioso son wp-content/themes, wp-content/plugins y wp-content/uploads, porque:
- Al actualizar de versión de WordPress se recomienda borrar todo lo que haya anteriormente y luego poner en su lugar los archivos de la nueva versión, salvo los tres directorios mencionados anteriormente. Un programa verdaderamente hijoputa tiene que guardarse en un lugar en el que pueda sobrevivir. Yo las actualizaciones las hacía (cuando había que hacerlas a mano) descomprimiendo directamente la versión nueva encima de todo lo anterior. Algún archivo viejo y sin actualizar también se quedó por ahí danzando.
- Los plugins también hay que actualizarlos. En las versiones nuevas hay un mecanismo automático que avisa de la presencia de una actualización.
- En las versiones nuevas de WordPress, para aquellos que llevamos arrastrando el archivo de configuración desde los tiempos de la televisión en blanco y negro, han incluido algún mecanismo de seguridad extra que seguramente merezca la pena.
- De una pifia de estas no se libra ni la base de datos.
- El usuario admin creado por defecto está mejor muerto y enterrado.
- El código insertado puede estar al revés.
- Hay unos cuantos plugins que pueden ayudar a realizar un diagnóstico de lo que está ocurriendo o proteger el blog ante las ñapas más obvias: WordPress Exploit Scanner, WP Security Scan, Login Lockdown. El primero de todos me permitió ver que había en la base de datos dos usuarios que no había creado yo. Además, existe una página que mira nuestra instalación desde fuera en busca de posibles agujeros: WordPress Scanner.
La solución, finalmente, pasó por descomprimir un WordPress en pelotas, mover ahí los tres directorios famosos, el archivo de configuración y algún que otro directorio con cosas que tenía en la instalación anterior, verificar que no quedaba ni rastro de cadenas de texto sospechosas por ahí (en el primer enlace hay una buena lista de cosas a buscar), borrar la copia antigua y mover la nueva a su lugar. Y luego cambiar las contraseñas: la de los usuarios y la de la base de datos.
Creo que eso era todo lo que quería contar. Si alguien ha tenido más experiencia con este tipo de galimatías, soy todo oídos. Nunca se sabe cuándo puede volver a ocurrir (espero que nunca).




Jordi (#1) dice:
Moraleja: hospeda tu blog en Wordpress.com y deja que todos estos marrones los pasen ellos.
Esta manía de tener el blog en hosting propio… Total, en Wordpress.com te dejan direccionar tu propio dominio, tienen plantillas hiperminimalistas (mi favorita, “White as milk”) y te puedes bajar copias de seguridad del propio blog a placer. Y pagando lo mínimo.
05/11/2009, 09:30RinzeWind (#2) dice:
No te niego que sea una opción, pero en este hosting hay más cosas albergadas además del blog. Y no me sale excesivamente caro y de vez en cuando puedo trastear un poco, que siempre lo agradezco.
05/11/2009, 09:43Jordi (#3) dice:
OK, si te sirve para más cosas ya me callo. Pero para alguien que empieza ahora es mucho más práctico pasarse a Wordpress.com: tienes siempre el sistema actualizado automáticamente y sólo te permiten ejecutar código seguro. Problemas cero.
05/11/2009, 09:56Dam (#4) dice:
Amigo Rinzewind, has arreglado el blog pero su diseño ha perdido el atractivo y hace un poquito daño a la vista. Tú antes molabas ;) Saludetes
05/11/2009, 13:43Daniel (#5) dice:
Sí, yo lo veo pelín vacío de más. Está bien no ser barroco, pero ahora da la impresión de que algo ha ido mal y no ha cargado el CSS de turno.
05/11/2009, 16:59Antonio (#6) dice:
Enhorabuena por arreglar el desaguisado. Solo una cosa, respecto al pantallazo. Ábrete puertos para la mula, que esa que tienes no ve ná.
05/11/2009, 20:14dfdsf (#7) dice:
Pues cagate en la puta madre de los diseñadores de exploits, ¡cojones ya!
05/11/2009, 22:41Escolar.net (#8) dice:
[...] de una invasión spammer como la que sufrió Rinzewind, he actualizado el Wordpress a la última versión. El gusano feroz está cautivo y desarmado [...]
05/11/2009, 23:56Blogografia (#9) dice:
[...] de una invasión spammer como la que sufrió Rinzewind, he actualizado el Wordpress a la última versión. El gusano feroz está cautivo y desarmado [...]
06/11/2009, 01:42Lek (#10) dice:
Por lo que parece han estado muy ocupados últimamente crackeando blogs :(
06/11/2009, 11:09enrique (#11) dice:
Los de wordpress dejaron de soportar la rama 2.0 en julio y no tienen previsto mantener una versión con soporte a largo plazo.
No deja de ser una pesadez, porque además sacan versiones como churros y sólo parchean en la última. La alternativa (que es montárselo uno por su cuenta) es aún peor, así que yo de momento me aguanto, pero es bueno saberlo.
07/11/2009, 22:37enrique (#12) dice:
Por cierto, que excepto la cabecera que me parece un poco sosa ;P, me parece increíblemente limpio y fácil de leer el nuevo look. Me gusta.
07/11/2009, 22:40RinzeWind (#13) dice:
#11: je, yo no me enteré de eso. Yo seguía pensando que hasta diciembre estaría seguro. Ya veo que no.
08/11/2009, 00:26enrique (#14) dice:
No te creas, no es fácil enterarse. Al leer que seguías en la 2.0 pensé que era yo el que había estado haciendo el primo actualizándome (y la verdad es que hasta julio así fue) y me puse a buscar sobre el soporte, pero no sé si porque mi google-fu es todavía débil o qué, no fue trivial de encontrar.
Por supuesto me he suscrito al feed de wordpress para ir enterándome de estas cosas, esta visto que seguirlo desde el dashboard no me funciona.
08/11/2009, 14:34RinzeWind (#15) dice:
#14: a mí el blog de WordPress desde el dashboard sí me funciona, pero ahora. Antes, con el blog medio roto (de hecho, actualicé porque se había jodido lo de subir archivos al blog – imagino que como efecto colateral del gusano), me quedé en un artículo del año pasado, pero no le di importancia. Melón que soy.
08/11/2009, 15:49PazHack (#16) dice:
A las buenas caballeros y señoritas…
Yo me llevo 2 dias sufriendo un ataque de denegación de servicio, se la solución
pero no puedo hacer nada por que el señor al que le pago por el hosting es un inutil o esta dormido . No es un inutil, esto pasa por que no sabe configurar su hosting, “Tio mirate !!! el php.ini”.
Quizas sea un reseller de esto o algo asi y no sabe ni puta…
En este caso la culpa no la tiene el que lanzo el DoS que seguro que ni es hacker, ni cracker , ni ná, seguramente sea el hijo de cualquiera aburrido.
La culpa la tiene lo inutiles que son en el Dto de Seguridad “si lo tienen” y/o Sistemas
yo les pago y exijo la calidad por la que pago todos los meses.
Me hierve la sangre porque soy administrador de sistemas “harto de solucionar marrones en portales importantes y de forma rapida” y estoy en sin empleo, ver como hay gente de mucha calidad en la calle y que los cxpullxs lame culos siguen con empleo sin trabajar….uff
Madre mia, si hasta le mande un correo con cosas que tienen que mirar y sigo igual… ni contestan y encima me ponen prioridad baja en la ID.
11/11/2009, 19:44