Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

miércoles, 6 de agosto de 2008

Sufrimos un nuevo ataque XSS


Estimado lammer:



Me consta que en las frías noches al este de los Urales, cuando el ulular del cárabo rasga el silencio y el lobo recorre la estepa siberiana buscando una presa de la que alimentarse, tú te aburres soberanamente. Por eso, entiendo que te ocultes entre las sombras, frente al brillo de tu monitor en el interior de tu habitación, y te dediques al juego de los hackers. Es divertido colarse en los sistemas ajenos, no sabes cómo te entiendo. Pero los hackers de verdad no se dedican a llevar ataques de Cross Site Scripting a sitios con Wordpress, ni a inyectar HTML con enlaces a sitios web de juegos de azar o pornográficos. Tal vez por esto, amigo mío, los cuatro copeks que te dan por llevar a cabo este trabajo valgan más que tu dignidad.

Y deja ya de tocarme la moral, ¡c@#@!

Sin rencor,

Lobosoft.

Bueno, si no nos tomamos lo que nos viene con un poco de humor, sería para tirar la toalla. El pasado mes Lobosoft sufría un ataque XSS que me hacía perder posicionamiento en Google, debido a una inyección de código HTML en el archivo de cabecera (header.php) de Wordpress. En aquel momento tenía la versión 2.3.2 con parches de seguridad del CMS, actualicé a la 2.5.1 tras el ataque y, posteriormente, a la 2.6, que es la que sirve de motor actualmente al blog. Pues bien, el día 27 de julio sufrí otro ataque frustrado en el blog, pero esta noche (6 de agosto) ha vuelto a ocurrir. Al levantarme esta mañana, como suelo hacer habitualmente, mientras desayuno  leo otros blogs y noticias, reviso posibles comentarios de los lectores de Lobosoft y elimino SPAM… En fin, el pan nuestro de cada día. Al revisar las estadísticas, me encontré con una entrada extraña a través de un sitio de referencia, muy similar a las entradas buscando pastillitas azules para la virilidad que tuve durante el anterior ataque.



Andaba preguntándome si se debería aún al mismo (de vez en cuando aún siguen llegando visitas, aunque cada vez menos), cuando he entrado en el blog y me he encontrado con que sólo se visualizaba la cabecera, y nada más. "No puede ser", me he dicho, pero sí que era. Al visualizar el HTML de la página, y aunque se encontraba completo, en la cabecera he encontrado un DIV, como la vez anterior, posicionado en un punto externo a la pantalla, con un enlace a casinos on-line. El problema es que esta vez, además, se habían dejado la etiqueta DIV sin cerrar, por lo que el resto de la página no era renderizada por el navegador debido al error del código HTML. He cambiado el header.php, eliminando el DIV y su contenido, y he revisado otros componentes, encontrando en el pie de página (footer.php) otro DIV similar, ahora sí, con más de 100 enlaces a casinos.


Tras limpiar el footer.php,  me dispongo a revisar el log de accesos a la página. Casi 15200 accesos a recursos en la última semana, pero basta con buscar por header.php y llego a las 00:39 del día 6 de agosto. Una llamada al archivo comments-popup.php del tema Default de Wordpress (el que incorpora con su instalación básica), pasándole como parámetros la ruta del tema predefinido para Lobosoft, la página header.php y un parámetro edit con valor 1. El acceso se ha producido con un navegador Opera 9.50, y el sistema operativo del atacante era un Windows XP. Origen: Rusia. En el log veo cómo ha accedido varias veces al archivo comments-popup.php para ir modificando el header.php y el footer.php. Pongo la URL que ha usado en el navegador y me encuentro con…



Sí, señoras y señores, una puerta trasera. Se trata del PHP Shell nsTview, un script de administración remota. y no (en principio), del contenido "normal" de comments-popup.php. De hecho descargo el archivo para editarlo, y su contenido es aparentemente normal… excepto por una función eval tremendamente sospechosa:



eval(gzinflate(base64_decode('7b1rcxtHsiD6XRH6DyWIIwA2CQI…

Eval lee y ejecuta un determinado código PHP que se le pasa como parámetro. Pero el código que está ejecutando aquí está comprimido, de ahí que deba descomprimirse (gzinflate) tras ser convenientemente decodificado (base64_decode). Si extraemos el contenido de la cadena, lo tendremos (sustituyo las etiquetas HTML por otras con corchetes para que se visualicen correctamente):



[title]nsTView v2.1:: nst.void.ru[/title]
[center]
[table width=100 bgcolor=#D7FFA8 border=1 bordercolor=black][tr][td]
[font size=1 face=verdana][center]
[b]nsTView v2.1 :: [a href=http://nst.void.ru style='text-decoration:none;']
[font color=black]nst.void.ru[/font][/a][br][/b]
[/center]


El sitio http://nst.void.ru que aparece en el código es el del Network Security Team, que por el ruso que sé (es decir, nada) tiene apariencia de sitio web de hacking o dedicado a la seguridad, vaya usted a saber, pero que tienen toda la pinta de ser los creadores del nsTView, ¿verdad? ;) .



El código que mostraba antes presenta sólo el formulario de acceso (el HTML) del administrador. Si cambiamos el eval por un echo, veremos el código PHP real... y acongoja mirarlo. Se trata de un administrador remoto completísimo, que permite desde modificar un archivo del servidor (cambiando si es necesario los permisos del mismo), hasta hacer consultas y modificaciones sobre las bases de datos del mismo, pasando por todo tipo de lindezas. Yo quiero uno para Reyes :)



Y el panel de administración, ya obtenido el PHP sin errores, está muy, pero que muy bien:



Por otro lado, la IP del atacante se corresponde con el dominio pps.nntime.com, un proxy anonimizador, por lo que debería contar con la colaboración de sus administradores para conocer la IP origen del ataque (si no dio más de un salto hasta llegar a Lobosoft, lo que es posible, aunque no muy probable si tenemos en cuenta la cantidad de rastros que ha ido dejando el atacante a su paso). Además del registro en los logs de acceso al dominio, he encontrado errores de ejecución, por ejemplo, generados por el propio comments-popup.php:



[06-Aug-2008 00:39:22] PHP Fatal error:  Call to undefined function add_filter()…

Ante esto, más vale prevenir que curar. De poco valen (para este tipo de ataque al menos) los numerosos parches de seguridad que han ido apareciendo de forma paralela a las versiones de Wordpress. He revisado los permisos del sitio web, y eliminado la puerta trasera, así como cualquier posible acceso a través del tema Default. Sin embargo, y aunque intento tomarme a broma el asunto, la verdad es que me ha tocado la moral encontrarme con este tipo de problemas en Wordpress hasta en la última de sus versiones. A ver cuánto dura la calma ahora.


Para saber más:




1 comentario:

  1. Alejandro, sin duda, la suma de todos permitiría conseguir algún avance a este respecto. En mi caso, cuando se produjo la escalada de ataques a mi blog, que es una web personal aunque centrada en mi ámbito profesional, lo más que pude hacer fue prevenirme frente a futuros ataques del mismo tipo. Como describí por aquí en su día, pasé desde el desencanto por Wordpress, y la migración a Drupal, hasta volver a Wordpress, que me parecía mucho más adecuado para lo que estaba haciendo, y tomar la determinación de defender mi pequeña plaza como si de una fortaleza se tratase. Hasta la fecha, y crucemos los dedos, no he vuelto a sufrir una intromisión en el sitio web, pero puntualmente detecto intentos de hacerlo mediante ataques de diversa naturaleza.

    Si os decidís a denunciar la indefensión que sufren nuestros sitios webs ante ataques de este tipo, me sumaría a vuestra campaña, dando difusión incluso a la misma, para ver cuántos propietarios de blogs y sitios webs afectados, o con posibilidad de ser atacados, se suman.

    Muchas gracias por comentar aquí vuestra iniciativa, que espero que reciba el merecido respaldo. Recibid un cordial saludo.

    ResponderEliminar