UPDATE: Drew Strojny, Vigilance theme creator ask me to hide the post until a he publish a fixed version. He did yesterday so I put this post online again.
Friday 3 I discovered XSS vulnerability into WordPress.com. A malicious attacker can insert Javascript into the “Alert Box” feature of theme Vigilance. It was a permanent XSS vulnerability that can be used to make a XSS worm around WordPress.com or to spam all blogs with some kind of Russian or Chinese malicious links.
I send an email to WordPress.com support Saturday 4 knowing they about the vulnerability. They (well, Anthony) reply me asking about what king of Javascript I was able to insert:
To: me@email.com
Subject: [WordPress #282419]: General – I discover that i can insert javascript without p
Date: Sat, 04 Apr 2009 11:49:32 +0000
From: “Anthony – WordPress.com” support@wordpress.com
Reply-To: support@wordpress.com
Content-Type: text/plain; charset=”UTF-8″
Content-Transfer-Encoding: 8bitHi,
What specific javascript code did you enter?
Best,
Anthony
Automattic | WordPress.com
I answered with more specific technical detail:
In-Reply-To: khkrik.hlo0f3@help.automattic.com
Date: Sat, 4 Apr 2009 13:52:13 +0200
Delivered-To: me@email.com
Subject: Re: [WordPress #282419]: General – I discover that i can insert javascript without pr
From: Pedro Laguna me@email.com
To: support@wordpress.com
Content-Type: multipart/mixed; boundary=0016e6ddfed2d012cc0466b94bfd
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bitI attach three pics. I try only some simple javascript, but I’m sure I’ll be able to put anything there.
Pedro Laguna
The three pictures I send are these ones that demonstrate that I can insert anything I want:
Vigilance Options with some simple Javascript
This blog was XSSed!!!
The Javascript code without being filtered
After this email I started to think about how an evil person could be do with this vulnerability. The first step is to determine how WordPress.com users can be affected. We have two kind of WordPress.com users:
-
Users with the Vigilance Theme activated
-
Users with other theme
The first target is easy. We can use AJAX to generate every HTTP connection we need so we can copy the XSS worm code into the Alert Box feature of blogs who have this theme activated:
POST /wp-admin/themes.php?page=functions.php HTTP/1.1
Host: <blogname>.wordpress.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 234
V_pages_to_exclude=&V_background_css=Disabled
&V_background_color=dcdfc2&V_border_color=d7dab9
&V_link_color=772124&V_hover_color=58181b
&V_alertbox_state=On&V_alertbox_title=Title
&V_alertbox_content=Message
&save=Save+changes&action=save
We will change the Message value to insert our Javascript code and change the state to On to display it in the front page.
The other group of users can host our evil XSS code too. They need first to activate the Vigilance theme. It can be easily done with the following HTTP request:
GET /wp-admin/themes.php?action=activate&template=pub%2Fvigilance&stylesheet=pub%2Fvigilance&_wpnonce=a4c05c7d1d HTTP/1.1
As you can see its a GET request that can be achieve with a simple CSRF request. Really? No! They are using a _wpnonce var to block this king of attacks. But it is not a problem when we are able to insert Javascript inside the domain because the cookie domain is defined as .wordpress.com. This means that we can generate an AJAX request to retrieve the wp-admin/themes.php page, extract the _wpnonce value and generate a valid theme changing request.
Ok, now we have the transmission part under control. But… how we start all this mess? We can create a blog, with some proxy, fake mails, public AP, etc but this is not part of this post. The real interesting thing is that we can use Google to find new victims to our XSS worm. In the front page of Vigilance active theme blogs we can see the text “Theme: Vigilance by Jestro”. This text and some Google skills allow us to determine that at least 500,000 blogs are using this theme:
Some spam to these blogs with the URL of our XSS worm blog and the party start! But we need people visit the infected blogs. In this part we need some social engineering skills and tricks. As we can interact with all the admin interface of logged users we can also post into his blogs. We can write a post about the new theme (to incite people who reads blogs by RSS to go to the real blog)
As we can see the process to make a XSS worm is a bit complex and required some Javascript skills. In this case the anti-xss filter was not activated so we don’t need to worry about evasion techniques.
Finally, at Monday 6, WordPress.com (Nick) contact me to give me the thanks to advise they about the vulnerability and confirming me that the vulnerability has been patched.
To: me@email.com
Subject: [WordPress #282419]: General – I discover that i can insert javascript without pr
Date: Mon, 06 Apr 2009 14:46:21 +0000
Message-ID: <khop19.56t9h3@help.automattic.com>
From: “Nick – WordPress.com” support@wordpress.com
Reply-To: support@wordpress.comHi,
Thanks for letting us know about this! It’s been patched up now so the JS can’t be used.
–
Nick
Automattic | WordPress.com
Today I post it to public to warn people about the risk of XSS vulnerabilities and congratulate WordPress.com team for the quick response. Have a nice day!
Si, se que la pantomima de los enamorados fue ayer, pero ha sido hoy cuando he caido en las redes de Cupido (si, tambien se que Cupido lo que tiran son flechas, pero en un post sobre internet queda mejor decir redes
)
Andaba desde hacia una semana mas o menos mi Firefox dando problemas, no se abria la mitad de las veces, el Javascript no me funcionaba bien, alguna extension desaparecio sin darme muchas explicaciones… y barajaba la posibilidad de reinstalarlo. Ya sabeis, algo que no llevaria mas de 3 minutos pero que alargas dias. Hoy sin embargo a la tercera vez que abria una pestaña nueva sin saber muy bien a donde navegar y que hacer, me anime a hacerlo. Despues de desinstalarlo ha habido momentos de panico en mi cabeza: “Bueno, ya esta desinstalado, voy a bajarmelo de nuev… ¡¿Pero como lo bajo ahora si no tengo navegador?!” Si, habia desinstalado antes de bajar, menos mal que me quedaban el Chrome y el Internet Explorer. Con esto de que tengo Chrome 2 Beta y Internet Explorer 8 Beta 2 pues he pensado que instalarme la beta de Firefox 3.1 seria lo logico, ¿no?
Confieso que apenas lo habre probado mas de dos horas, pero ya me esta dando muy buenas sensaciones, tiene dos o tres detalles que me han llamado la atencion y que me han hecho olvidar rapidamente los problemas que tuve durante la semana pasado con Firefox 3.0
Para empezar, lo primero que hice (palabrita del niño Jesus), fue comprobar el tema de los certificados extralargos que comente el otro dia. Y aqui esta la captura:
Luego otro detalle que me ha gustado mucho es el poder borrar el historial y los datos privados de navegacion en un rango de tiempo determinado, algo muy muy util
Y para terminar, la guinda, la caracteristica que me ha motivado a escribir este post, mi fantasia hecha feature… La navegacion entre paginas desde links en la vista del codigo fuente de las paginas!!!! Ahora el visor de codigo fuente muestra las referencias a ficheros (directos e indirectos) como enlaces sobre los que podemos navegar para ya ni siquiera tener que ver los colorines de la pagina. Ademas podemos pulsar la tecla de borrado para navegar hacia atras. Lo que ya no se puede es tener pestañas de codigo fuente, lo cual seria ya apoteosico. De todas maneras como es una beta esperemos que para la final lo incluyan y que mejoren la deteccion de enlaces en el codigo fuente, pues dentro de codigo Javascript y del CSS los enlaces no permiten ser clickeados.
Se que habra mil cosas nuevas de las que seguro me enteraria si leyese el Changelog, pero… ¿Y lo divertido que es ir descubriendolas? Ademas, a mi las mejoras en la velocidad del motor de renderizado, la optimizacion del interprete Javascript y que pase con mas o menos nota el Acid Test me da bastante igual.
Seguramente este seria un post que yo no escribiria si no fuese una aplicacion que uso tan a menudo y con la que estoy tan contento. ZoomIt es para mi una aplicacion indispensable e irremplazable cuando de dar cursos y charlas se trata.
Sin embargo, desde que tengo Windows 7, me entere de los atajos de Windows + + y Windows + – y vi algo que llevaba tiempo soñando: ampliaciones de pantalla donde lo ampliado sigue siendo manipulable, editable, en definitiba “tocable”. Reconozco que por un momento pense abandonar mi ZoomIt. Sin embargo existia algo que me echaba para atras y era la necesidad de “precarga” del programa encargado del aumento, esos segundos de retraso me parecen eternos. Ademas nos deja sobre la pantalla un icono semitransparente de una lupa que no me gusta nada.
Por estos motivos y por otros (el poder pintar sobre la pantalla y remarcar zonas importantes es vital para mi) segui usando ZoomIt para mis presentaciones. Pero es que ayer descubri con gran alegria y regocijo, que el “bestia” de Mark Russinovich (con cariño
) habia sacado una nueva “major version”, la 3 y en la que su novedad mas importante es la de poder hacer LiveZoom. Hay que reconocer que aun le quedan algunos aspectos que mejorar, como la duplicacion del cursor o la imposibilidad de pintar, pero para ser la primera version que lo incluye me parece muy bueno. Ademas asi mantengo el zoom original, el que me permite pintar y el zoom “live”, que me permite mostrar acciones en progreso mientras sigo contando el rollo que toque en ese momento.
Nota: Esta caracteristica solo funciona con Windows Vista o superior, pero…. ¿Acaso existe algo anterior?
Con mi nuevo Zune (ya hablare de el algun dia) me he suscrito a una serie de podcast en ingles sobre tecnologia para ir cogiendo un poco de oido en el ingles ademas de ver las peliculas y las series sin doblar. Uno de esos podcasts a los que me he suscrito es Security Now! donde desvarian en mayor o menor medida sobre temas relacionados con la seguridad.
La semana pasada iba escuchando en el metro el capitulo numero 179 y comentaron una cosa que me hizo mucha gracia: Preguntas secretas realmente complicadas de responder (incluso si eres tu el que quieres proteger tu cuenta!). Os dejo aqui la lista original, recogida por Joel Gunz:
- What is your mother’s maiden name?
- What is your older sister’s favorite Monopoly game piece?
- Who did your paternal grandfather vote for in the 1956 presidential election?
- Why did you choose a liberal-arts degree when your entire family urged you to go into finance?
- In what year did you begin working on your novel?
- How many weeks away was graduation when you dropped out of college?
- What was your score on the civil-service employment exam?
- Where were you sitting when your girlfriend told you she was pregnant?
- Where did you never end up going for your honeymoon?
- In what year did you begin working for the post office?
- What is the name of the hedge-fund manager your ex-wife married?
- How many hours did it take you to drink that bottle of Jack Daniel’s yesterday?
- What time was it when, in a drunken rage, you threw your novel into the fire?
- If you could do it all over again, what would you do differently?
Mi respuesta para todas ellas seria la misma: asdj3oij34oij,mnwn55435″$·4eve o algo parecido. La verdad es que nunca he creido en las preguntas secretas para recuperar claves, casos ha habido muchos de famosos que han perdido su privacidad por poner datos reales en la respuesta. La creacion de un link temporal para recuperar las claves es mucho mas complicado a la hora de programar pero nos garantiza una mayor seguridad. Sin embargo tampoco es la panacea pues si es un enlace facilmente predecible un atacante podria generar un enlace para recuperar la clave del usuario que desee, pero esto sera materia de otra entrada con mas tiempo…
Estaba yo navegando por unas cuantas paginas, metiendo comillas, mirando codigo HTML, buscando subdominios con Google… cuando me he topado con la pagina de eTendering de Londres 2012 y esta era la pinta que tenia la barra de direcciones de mi navegador:
Quizas hayais visto alguna vez este nuevo añadido de Firefox 3 que ya incluia Internet Explorer 7 y que permite a las compañias solicitar un certificado extendido (Extended Validation Certificate) con su nombre y datos, que hacen que nuestra barra de direcciones cobre “color” y nos sintamos mas seguros. Podeis ver algunos ejemplos en las paginas de Verisign o las de login de Live.com.
En los ejemplos anteriores solo pone el nombre de la compañia (y corto), pero es que a los de Londres 2012 se les ha ido la pinza y han metido todo el chorizaco de nombre de empresa registrado, dejandome sin barra de navegacion a la vista (¿Y ahora como meto yo una comilla?)
Ya curioso me he abierto la misma pagina en los otros navegadores que tengo instalados, Internet Explorer 8 Beta 2 y Google Chrome 2 Beta y este ha sido el resultado (Todas las capturas estan hechas en una ventana maximizada en una resolucion de 1280×800):
Se agradece la opcion de Internet Explorer 8 Beta 2 de definir un tamaño maximo para el nombre de la empresa certificada, pues para mi la barra de direcciones es lo mas sagrado del navegador. Tiron de orejas para Chrome que ademas de ocuparme casi media barra de direcciones con el nombre, no proporciona un elemento claro donde hacer clic y comprobar el resto de informacion del certificado, al menos en Firefox 3 y Internet Explorer la zona se ilumina para indicar que es un elemento interactivo.
¡¡¡Sigo escribiendo!!! Esta semana ya no se ni cuantos posts llevo pero unos cuantos seguros, unos de menos calidad, otros de aun menos… Pero lo de estar escribiendo a todas horas del dia sobre cosas tecnicas por motivos de trabajo me esta animando a soltarme con esto del plasmar ideas por escrito. Hoy vengo a contaros un truquito y una curiosidad. En verdad son lo mismo, pero asi queda como que cuento mas cosas.
Ando leyendo un monton de documentos por la web ultimamente y ademas estos documentos suelen estar en un txt directamente colgado en internet. En concreto al que mas atencion le estoy prestando desde hace dos dias es a w00w00 on Heap Overflow, el cual tiene el dudoso honor de ser la beta mas larga que conozco.
En el texto nos dice que lo que leemos es una version preliminar beta del articulo y ademas aparece fechada en enero de 1999. Esto ya nos daria motivos mas que suficientes para darle el premio a la pagina web que lleva mas tiempo en beta (cuando aun no se sabia que era eso de la web 2.0!!!) pero aun podemos afinar un poco mas sobre la fecha de la beta y de cuando es la ultima version.
Un detalle no muy conocido por la gente es la cabecera Last-Modified del HTTP, que nos indica la ultima vez que se modifico un cierto fichero. Esta cabecera es opcional y normalmente no se suele encontrar en los servidores pero en este caso si que se encuentra presente.
Para ver la cabecera vamos a hacer uso de la extension de Firefox Live HTTP Headers, la cual nos muestra claramente que el fichero fue modificado por ultima vez el 24 de enero de 2002 a las 22:26. Aun con esas creo que le sigue ganando a GMail, el producto beta por excelencia

Cuando uno se encuentra “sin querer” fallos en algun tipo de software lo primero que piensa y hace es reportar el fallo al creador o responsable, pero cuando uno ya ha reportado muuuuuuuuuuuuuuuuuuchos fallos y la respuesta siempre ha sido la indiferencia, el pasotismo y la falta de agradecimientos (con honrosas excepciones) pues empieza a dejar de preocuparse por avisar.
Por eso cuando descubri un fallo en el plugin de WordPress WP-Forum 1.7.4 decidi que pasaba de avisar al creador (mas que nada porque llevaba sin actualizar el plugin desde tiempos inmemoriales y encima jugaba al WoW
). Sin embargo hace un par de dias leyendo un blog sobre seguridad en blogs, valga la rebundancia, publicaron exactamente el mismo fallo que yo habia descubierto pero asociandolo a la version 1.7.8.
Esto me molesto, no porque los creditos se los llevase otro, un tal [[seomafia]] que parece que esta empezando en esto, si no porque lo asocian a una version mucho mayor que la que yo descubri. ¿Que significa esto? Pues que el tio si que estuvo desarrollando WP-Forum despues de todo (incluso parece que hay una version 2.2 de WP-Forum) y que de haberlo avisado yo ahora mismo no estariamos hablando de una vulnerabilidad en su software.
Sirva esto como un escarnio publico que aplico sobre mi mismo a modo de autoflagelamiento para concienciar a todos sobre la importancia de reportar todos los fallos que encontremos, por muy insignificantes que nos parezcan o por muy abandonado que consideremos el proyecto.
P.D. Esta mañana he probado un poco YouAre, una evolucion de twitter pero con sabor andaluz, y ya tienen reportada una vulnerabilidad, a ver como responden a ella
ACTUALIZACION: Ya han contactado conmigo, ademas mediante GTalk, ¡que modernos!
Andaba yo trasteando un poco con el Ollydbg cuando me he encontrado con esta cadena metida en algun lugar de mi memoria:

Interesante cuanto menos, a saber que sirve ese camarero… ¿Martini con vodka, mezclado, no agitado?
Andaba esta mañana, como desde hace unas cuantas, programando, debugeando y compilando desde cygwin. No me gusta mucho la consola que incorpora, pues algo que he aprendido a apreciar es el uso de pestañas en algunas aplicaciones, como por ejemplo el navegador o las consolas.
Buscando por internet he llegado a un post que decia solucionar el problema que tenia: cygwin con pestañas. En la entrada comentan que usando Console, un programa que añade una serie de mejoras a la consola de Windows, era posible hacerlo.
He bajado la ultima version (Console2 beta 2.00.142) y la verdad es que no puedo estar mas contento. De primeras viene con un perfil de Console2 que abre un cmd.exe clasico, pero con unos añadidos en la configuracion podemos empezar a trabajar con cygwin con pestañas, pues se integra a la perfeccion con Console2.

P.D. De paso tambien se le puede cambiar las teclas de acceso rapido a la creacion de pestañas nuevas a Control + T para una completa experiencia de usuario

