27 de enero de 2013

WordPress hackeado con el XSS UTF-7

inyección xss wordpress


Hoy me avisaba Jorge de que su sitio había sido hackeado mediante un sistema realmente extraño, que sustituía el código del “title” de su WordPress por una cadena de texto realmente críptica y, de paso, había cambiado la codificación del sitio a UTF-7 , entre otras lindezas.


Tras el susto inicial, y unas cuantas búsquedas y llamadas a su proveedor de alojamiento, ha ido dando con el problema y la solución.


La parte visible del hackeo puede variar, y en esta búsqueda de Google tienes varios ejemplos posibles de lo “tuneada” que puede quedar tu web una vez a merced de los hackers, pero lo preocupante era el cambio de codificación, que aludía a problemas gordos.


Pues bien, buscando aquí y allá, Jorge ha dado con más de un usuario de WordPress al que le había pasado, como este, o este otro, donde ya se hacía un análisis de por donde podían ir los tiros.


Y el culpable parece ser una vulnerabilidad XSS de Apache, que permitiría cambiar la codificación, que es lo que apuntaban en WordPress Answers.


El caso es que esto está trayendo bastante debate en los foros de Unix y Apache, pues hay quien dice que el problema es de Internet Explorer, pero la realidad es que el sitio te lo hackean, se pongan como se pongan.


La vulnerabilidad sería algo así:




  1. Alguien envía un texto de comentario del tipo +ADw-script+AD4-alert(+ACI-Hello+ACI-)+ADw-/script+AD4-. Y pasa cualquier validación.

  2. La base de datos espera que todos los datos entrantes sean UTF-8 y los trata como tales. Y como las cadenas UTF-7 también son válidas en UTF-8 esto provoca un error SQL, que ni mysql_real_escape ni htmlspecialchars tocarán.

  3. WordPress envía una cabecera text/html;charset=utf-7.

  4. WordPress muestra el comentario, esperando los datos, pero como está tratado como un UTF-7 por el navegador se ejecuta el JavaScript.


El caso es que la mayoría de los navegadores no soportan UTF-7, así que mostrarán la cadena como UTF-8 o Windows-1252, pero la realidad es que la posibilidad de que alguien te haga un destrozo a la web ejecutando códigos de este modo está ahí.


¿Hay solución?


Pues afortunadamente si, y lo primero, y no digas que no te he avisado veces, es tener WordPress actualizado. Incluso a Jorge solo le ha pasado en el único WordPress que tenía sin actualizar a la última versión, así que ya sabes.


Lo que no arregla el problema es volver a cambiar la codificación en la base de datos a UTF-8, pues aún seguirías sin saber por donde te han entrado, así que me remito a la frase anterior: busca como culpable inicial un WordPress sin actualizar, tuyo o de un vecino de hosting (eso es lo malo).


Una vez ahí recupera una copia de seguridad reciente e instala la última versión desde cero, para asegurarte que tienes el sitio limpio de cualquier código que hayan podido inyectarte mediante JavaScript. Sigue la rutina para proteger WordPress de malware.


En la parte de Apache, para quedarte más tranquilo, hay varios ajustes que se pueden hacer, así que habla con tu proveedor para que se asegure.


Y nada más, si acaso que Jorge nos vaya comentando que tal le ha ido con el asunto, y nos apunte algún detalle más, o tu mismo si te ha pasado y has llegado a mejores conclusiones sobre este problema. Yo he creído importante compartir su problema y las soluciones encontradas para que estés avisado y pongas contramedidas.








via Jonathan's starred items in Google Reader

No hay comentarios.:

Publicar un comentario

Comenta con Respeto. Y escribe claramente lo que deseas transmitir