Equilibrio Inestable

2010/10/11

Usabilidad en GNOME

Filed under: Personal — Tags: , , — Pedro Laguna @ 11:03 PM

Bueno……………… hoy me han llamado troll… vamos a dar de manera mas desarrollada los argumentos que me han hecho decir hoy por twitter que la usabilidad de GNOME necesita aun algunos detalles. Seguramente me deje muchos, pero estos son los que especialmente me han estado sacando de quicio durante el año que llevo usando Ubuntu como sistema operativo principal. Las capturas de esta entrada estan hechas con un CD Live de Ubuntu 10.10, que salio ayer, porque desde hace unas semanas decidi pasarme a KDE…

Enviar a disco extraible

Tan dificil es? Meto un pendrive, busco el fichero que quiero guardar y hago click derecho, enviar a y tengo ahi el dispositivo que acabo de conectar. Pues no, en Ubuntu tenemos las dos utiles opciones de “Home” y “Desktop”. Pero si el fichero ya esta en el Desktop!!! Venga, decidme que puedo editar un fichero de texto en ~/.gnome2/conf/ o algun directorio asi para añadir todas las entradas que yo quiera.

image

Abrir en carpeta de destino

Esto no se si sera problema de Firefox o de GNOME, aunque me inclino a pensar que es de los segundos. Cuando me bajo algo en Firefox este me da la opcion de hacer click derecho sobre el elemento y seleccionar abrir la carpeta donde se ha bajado. Esto en Windows (oohh, he dicho Windows por primera vez en el post, ya podeis dejar de leer y pasar directamente a insultarme en los comentarios) me abre el explorador Y me selecciona el fichero, lo cual mejora mucho la experiencia de usuario, sobre todo cuando tienes una carpeta de descargas con cientos de ficheros. En GNOME simplemente se abre la carpeta y ya tienes tu que buscarte el fichero.

image 

Dialogo de abrir fichero

Vale, este es uno de los que mas me fastidian… Aqui podriamos entrar en temas de seguridad pero eso daria para otro post. Cuando abro un fichero, hay veces y solo a veces, que me apetece ver a una tia con un caba… esto… que me apetece hacer click derecho y abrir un fichero o ver sus propiedades o…. enviarlo a un pendrive ;) Quizas sea que estoy malacostumbrado de Windows peeeeeeeeeeeeeeero lo encuentro muy util :)

image

Estaremos todos de acuerdo que algo mas que esas dos tristes opciones se pueden poner no? Ni tanto ni tan calvo…

Incosistencia en menus

Para terminar una que, la verdad, no me afecta demasiado,  pero cada vez que me la encuentro me descoloca. Me refiero al editor de menus de GNOME:

image

Cerrar y deshacer? No se, pero creo que es el unico menu que usa esta nomenclatura. No seria mas facil un Cancelar y Aplicar? Los cambios se guardan por defecto? Creo que, si no estas atento, puede despistar y mucho.

En fin, creo que quedan claro algunos de mis argumentos sobre la usabilidad de GNOME, tengo mas en la recamara, pero creo que con estos podemos empezar, no? Por cierto, las capturas incluyen todas un bonito cursor porque es el comportamiento por defecto. Muy bonito cuando se te olvida sobre el elemento o texto importante de la captura.

P.D. Para terminar no me gustaria dejar de repetir la inutilidad de que por defecto aparezcan solo dos elementos en las listas rapidas de “Mover a” y “Copiar a” acompañados de la inutilidad de poder hacer iconos tan grandes como nos guste. No seria mejor centrarse en que los iconos no aparecieran sobre otros iconos cuando aun hay espacios disponibles en el escritorio?

image

2010/09/27

Usando el raton con la izquierda

Filed under: Personal — Pedro Laguna @ 3:25 PM

Llevo una semana usando el raton con la mano izquierda y al igual que hice antes con los navegadores, vengo a contar como han sido mis primeras experiencias en ambos mundos: Windows y Linux.

  • Para empezar me siento estupido. Al principio me sentia torpe (sigo sintiendomelo, pero menos) y que no realizo las acciones al mismo ritmo que antes. Soy zurdo y para mi tener la mano izquierda libre navegaba con la derecha era una ventaja. Tener una libreta en la que ir apuntando cosas mientras sigues navegando sin tener que soltar el raton siempre es util.
  • Ninguno de los dos sistemas operativos cambia automaticamente la orientacion del cursor del raton cuando seleccionamos el “modo zurdo”. Es algo bastante obvio pero ninguno lo hace. Tenemos que tirar de configuracion y de punteros externos. En el caso de Microsoft ofrece cursores para zurdos.
  • En portatiles con touchpad, el sistema intercambia perfectamente los botones fisicos pero con el resto se hace un lio…
    • En Windows, al hacer clic sobre la superficie del touchpad hacemos clic derecho… Mal!
    • En ambos sistemas operativos el scroll al pasar el dedo junto al borde del touchpad sigue estando a la derecha en lugar de a la izquierda.
  • Los ratones con botones en el lado izquierdo se vuelven practicamente inusables. Clicks por descuidos y posiciones raras.
  • Aplicaciones que introducen sus propios cursores como algunas aplicaciones Flash no comprueban las preferencias del usuario (no lo he mirado, pero seguro que ni se han planteado que esto pueda ocurrir) y muestran cursores clasicos.
  • Los juegos tipo shooter o cualquier otro que haga uso del teclado y raton se vuelven completamente injugables.
  • Copiar y pegar. Tener que levantar la mano del raton para copiar y pegar me esta haciendo usar mas el menu contextual del raton.

Solo una semana y yo mismo he sido capaz de ver los problemas de usabilidad en cuanto a sistemas operativos de tener el raton a la izquierda. Ninguno de los expertos en usabilidad es zurdo? Lo dudo…

2010/09/16

Navegadores que me sacan de mis casillas

Filed under: Firefox, Internet Explorer, Personal — Pedro Laguna @ 12:45 PM

Hoy me he levantado con el pie izquierdo…. bueno, no realmente, pero me apetece escribir un post sobre los navegadores, ahora que tenemos IE9, Firefox 4 y Chrome 999e12 (o por ahi debe de andar… no? ;) ) Voy a comentar las cosas que me gustan y no de los navegadores, desde mi punto de vista personal y semi profesional, cuando profesional no es diseñador web ni CSS ninja, si no pentester y usuario (medio) avanzado de las caracteristicas que ofrecen los navegadores. Empecemos a repartir cera…

Chrome

  • Cosas buenas / Cosas que me gustan mas que en otros navegadores
    • Las pestañas siempre tienen disponible el boton de cerrar. Y no solo eso, si no que si tenemos multiples pestañas abiertas y cerramos compulsivamente haciendo clic, el boton de cerrar siempre estara en el mismo lugar, por lo que nos ahorrarmos el movimiento del raton.
    • Las herramientas para desarrolladores y la consola de JavaScript son bastante buenas y pueden dar el apaño (a mi) en algun caso.
    • Es rapido, no me metere en medir tiempos ni esas cosas ni si ejecuta mejor JavaScript que otros y demas, pero yo lo noto rapido.
  • Cosas malas / Cosas que me tocan las narices
    • Las descargas. El gestor de descargas me parece de los peores. Si me vendes que no voy a tener barra de estado para que no me quite espacio de la pantalla, por que me pones una barra con el triple de pixeles cuando me descargo algo?
    • Las pestañas. Yo quiero leer el titulo de la pagina sin tener que dejar el cursor sobre la pestaña, Si el titulo no se puede leer, para que lo vamos a poner? Para que Google lo indexe y ya esta…
    • Las descargas, de nuevo. Que se descargen las cosas automaticamente no me permite reaccionar a tiempo si, al hacer clic en un enlace, este lleva a una descarga. Consecuencia? Tengo la carpeta de descarga llena de ficheros basura que no quiero realmente ahi. Donde quedo eso de bajar a temporales y desde ahi abrirlo?
    • Las extensiones. No permiten la modificacion de la interfaz por lo que, por ejemplo, la hackbar, no puede ser portada como tal a este navegador.
    • Las extensiones, de nuevo :P El navegador en Windows, con un par o tres de extensiones y el player de Flash, se vuelve completamente un acaparador de recursos. Mi portatil no es una maravilla, pero antes iba bien! Han logrado que Firefox ahora parezca rapido…
    • La barra de direcciones. Si hago click en la barra de direcciones quiero que se seleccione toda, no solo que me pongas el cursor donde he hecho click. Seguramente aqui se puede discutir sobre UX pero me gusta mas como lo hace Firefox e IE.

Internet Explorer 9

  • Cosas buenas
    • Gestor de descargas, por fin! Habra que hacer algunas pruebas mas intensas, pero pinta bonito…
    • Y ya esta, que no lo he usado mucho, aunque se nota mas rapido que el IE8 :)
  • Cosas malas (aqui es donde queriamos llegar….)
    • WTF!!!??? Mitad de la barra para la URL y la otra para las pestañas??? Que no querais imitar a Google Chrome vale pero que cuando tenga mas de 10 pestañas abiertas no se vea nada? No, gracias…
    • La barra de estado. Parece que nos vamos a tener que ir despidiendo de ella… Que remedio, son 15 pixeles que a nadie le importan pero que yo sigo pensando que son importantisimos para separar la pagina del resto del escritorio.
    • De nuevo, limitar las extensiones del navegador a componentes COM (o como se programen…) No estamos en la epoca del .Net? No hay una manera facil, que yo conozca, de programar extensiones para IE en C#

Firefox

  • Cosas buenas
    • Extensiones! Y no dire mas sobre el tema :P
    • Visor de codigo fuente. La idea de hacer los enlaces clickables dentro del visor me parece el mejor avance en el pentesting de paginas web. Si, se que Chrome tambien lo tiene ahora, pero Firefox fue primero!
    • La nueva version 4 pinta muy bien. El sistema de grupos de pestañas me parece muy bueno, ya si se pudieran limitar el uso de Live HTTP Headers a uno solo de estos grupos…
    • Mantienen la barra de estado! Bien!
    • El nuevo menu arriba a la izquierda me parece mucho mejor que los de Chrome/IE9 con un iconito a la derecha.
  • Cosas malas (lo siento Firefox…)
    • A veces come memoria como el solo sabe hacer… Increible!
    • Aun no implementan el proceso por pestaña, haciendo que si peta una, pete el navegador :(
    • La implementacion de vista en miniaturas de las pestañas… No se, sera que no me acostumbro a eso, siempre acabo haciendo un click de mas.

Y ya esta! Creo que no me he olvidado de nada, pero seguro que me recordais en los comentarios que cosas os sacan de quicio a vosotros de cada uno de los navegadores ;)

2010/07/13

XCampo y Hackbar, volviendo a programar

Filed under: Firefox, PHP, Security, XSS — Pedro Laguna @ 12:46 PM

Buenas tardes!!! Vamos a contar por aqui para que quede constancia, algunas cosas que he hecho y que puede que alguien llegue a interesarle :)

Para empezar contar un proyecto que se me ocurrio en el avion de vuelta de la RootedCon. Venia dandole vueltas a un articulo que habia leido sobre como lograr que la gente viese el XSS como algo peligroso y no solamente como algo para mostrar un alert() en las capturas de los informes. Como era una idea que llevaba tiempo barruntandome decidi que ya era hora de hacer algo. Y ese algo es XCampo (leido Cruzcampo ;) )

Basicamente es un generador de payloads XSS para incluir en demos, informes o charlas. Ni que negar tiene que tambien se podrian usar en algun ataque real, pero no es la idea principal. Como los ataques XSS nunca son iguales (unas veces te filtran una serie de caracteres, otras tienes que “escapar” de una zona de codigo HTML que te molesta para incluir tu codigo, etc.) me he limitado a generar el Javascript mas parco y generalista que he podido/sabido y que luego habra que adaptar a las necesidades de la vulnerabilidad. Por ahora genera los siguientes ataques:

  • Fake login: Genera un div sobre el resto de la pagina con un campo de login falso. Los datos se envian al sitio web que nosotros queramos y ya ahi somos responsables de hacer lo que queramos con el usuario.
  • hax0r defacement: Intenta poner un div sobre toda la pagina, incluir un texto e incluso reproducir una cancion. Este modulo tengo que mejorarlo, pero creo que es el que menos usara la gente………… o no ;)
  • Form redirection: Muy util en ataques XSS que se encuentran en las paginas de login. Cambia el evento action de todos los forms a la direccion que le digamos. Ademas elimina cualquier tipo de Javascript de validacion que existiera, por si acaso!
  • Password managers: La idea es, haciendo uso de Javascript, robar la informacion que los navegadores autocompletan cuando hemos guardado el usuario y contraseña en una pagina. Por ahora solo esta implementado el de Internet Explorer, pero el de Firefox no seria dificil de hacer.
  • Session cookies: Lo mas tipico! Podemos enviar las cookies de un navegador hacia el dominio que queramos. Ademas existen tres maneras de hacerlo:
    • iframe
    • img
    • pop-up

Ademas cada uno de estos payloads, cuando es posible, puede usar la funcion de eliminar las comillas, evitando los filtros que pudiera haber a costa de ampliar el tamaño del codigo generado.

Yo creo que es un buen proyecto para mejorar esas capturas de los informes y yo ya lo he usado en un par y debo decir que el resultado es mucho mas espectacular que una ventana de alerta. Podeis descargar XCampo desde Google Code o probarlo online en http://www.equilibrioinestable.com/xcampo/ (a veces no esta subida la ultima version).

Y como ya me habia puesto a programar (de nuevo) le propuse hace un par de semanas al creador de Hackbar, segun mi opinion, la mejor extension de Firefox, el ayudarlo a mejorar la herramienta, pues hacia tiempo que el proyecto andaba parado y yo tenia algunas ideas para añadirle. Y acepto encantado!

Por ahora hemos subido la nueva version con algunas nuevas mejoras a Google Code desde donde os podeis descargar esta nueva version de Hackbar y andamos pensando en como podriamos mejorarla y añadirle nuevas funcionalidades para seguir auditando sin salir del navegador y sin usar proxys externos. Ahora mismo, novedades sobre la version “oficial” teneis:

  • Reverse(): Manera rapida de darle la vuelta a una cadena. No sabeis las maneras de cifrar que uno se encuentra por ahi ;)
  • Buffer overflow: Permite generar cadenas de caracteres A extra largas para probar servidores contra errores 414 y aplicaciones que no controlen bien el largo de los parametros.
  • Oracle: Ya que ultimamente me he visto las caras con un par de Oracles me vi en la necesidad de incluir la funcion CHR() y la concatenacion mediante doble barra en HackBar.
  • Y como siempre algunos pequeños cambios internos para mejorar el codigo y el desarrollo futuro.

Estamos pensando en que cosas podemos añadirle y como mejorarla. Yo ya tengo pensado ampliar el numero de funciones en los menus de MSSQL y Oracle, añadir mas opciones en encoding y mejorar el sistema de tabs, que ahora mismo tiene algunos fallos (no se pueden reordenar las pestañas, por ejemplo)

Y…. creo que no me dejo nada! Si teneis alguna sugerencia/propuesta podeis dejarlas en los comentarios, por correo o mejor incluso, usando el sistema de reportes de fallos de ambos proyectos.

2010/05/13

Auditoria de paginas ASP.Net

Filed under: ASP.Net, Seguridad Informatica — Pedro Laguna @ 1:04 PM

Despues de unos cuantos años ya auditando paginas web he de decir que las paginas que siempre me dan mas dolores de cabezas (de primeras, luego hay algunas que…) son las paginas en ASP.Net. Cuando veo una tengo que respirar hondo, concienciarme y armarme de paciencia.

Por defecto ASP.Net tiene algunas caracteristicas de seguridad que haran nuestros primeros ataques infructuosos, empezando por el codigo HTML que genera. El primer paso de toda auditoria que hago es leer el codigo HTML e intentar pensar como el desarrollador ha generado aquello. Ni que decir tiene que comentarios e indentaciones ayudan a la imaginacion ;) Pero es que con ASP.Net se le quitan a uno las ganas… Nombres de variables como ctl00$divPrincipal$TextLabel1 y multitud de llamadas a WebResource.axd hacen que sea un poco mas coñazo analizarlas con un un proxy local.

Ademas esta el “problema” del VIEWSTATE y sus amigos EVENTTARGET, EVENTARGUMENT, etc. Cuando se ponen de acuerdo para salir a paseo por tu proxy puedes olvidarte de muchas cosas (CSRF) pero sobre todo de limpieza en las peticiones. Lidiar con un campo oculto que a veces me ha llegado a ocupar mas de 500 Kb en cada peticion (auditamos seguridad, no rendimiento, pero se les podrian decir un par de cosas…) es algo poco agradable, por no decir algo peor.

Luego claro esta olvidate de base de los ataques XSS. Si se te ocurre meter algo que parezca una etiqueta HTML la aplicacion lo va a parar. Aqui solo tienes dos esperanzas:

  • La aplicacion no tiene controlados los errores y muestra un bonito mensaje de debug con algo de informacion y una captura para añadir al informe.
  • Encuentras un texto que se incluye dentro de una etiqueta HTML por lo que no necesitas añadir los simbolos > y <

Pero aun con esas si la aplicacion usa autenticacion por formulario tenemos que todas las cookies van a estar marcadas como httpOnly por defecto, asi que nos olvidamos del robo de sesion :(

Y hablando de formularios! ASP.Net proporciona una serie de componentes para autenticacion, recuperacion de contraseña y registro donde, no hace falta decirlo, no hay manera de inyectar. No podeis dejar a los desarrolladores que se hagan sus propios formularios de login?

Para terminar con las cosas que Microsoft hace bien en ASP.Net es el tema de los privilegios y roles de usuarios. Si los programadores son cuidadosos (en las ultimas he encontrado un par de sitios donde no lo habian sido ;) ) y hacen uso de las funciones de ASP.Net, podemos estar seguros de que las fugas de informacion o escaladas de privilegios van a ser las minimas.

En fin, que estoy deseando que la proxima auditoria sea un PHP……….. se nota mucho? :P

2010/04/14

En la variedad esta el gusto…

Filed under: Personal — Pedro Laguna @ 10:03 AM

Como? Ahora en español de nuevo? Pues si, ya ves… Resulta que ahora estoy escribiendo en ingles en el blog de la empresa en la que trabajo ahora y claro, tengo morriña y añoranza y tengo ganas de escribir cosas con ñ :P

Intentare hacer versiones en español de lo que publique en ingles o, si veo que es muy largo o me va a llevar demasiado os lo pongo en ingles y os apañais :P . Eso si, estos posts van escritos desde teclado ingles, asi que no espereis muchas aperturas de signos de interrogacion, exclamacion, acentos y un numero reducido de ñs.

Ademas me he animado a crear una cuenta de delicious donde poner links que considere interesantes relacionados con la seguridad. No espereis actualizaciones diarias, solo posts y paginas que yo crea que en algun momento voy a necesitar porque comentan algun truco concreto sobre como saltar algun tipo de proteccion. Lo mismo de antes, igual os toca algo en ingles que algo en español.

Y para terminar y abrir boca, una captura de un ficherito XML que me encontre por ahi el otro dia enrredando con una aplicacion Silverlight, para que luego digan que las aplicaciones Flash son muy inseguras:

Quizas en el proximo post de mas detalles y si, la contraseña del FTP esta en texto claro ;)

2010/02/10

Reading Geek Night #4

Filed under: Firefox, Geek, Security — Tags: , — Pedro Laguna @ 9:31 AM

Yesterday I did a talk about how use Firefox as pentesting tool at the Reading Geek Night event. It was a short talk showing only a few extensions to test the web security without other tool rather than a browser.

I’m not going to post the slides because I really didn’t use them but I’m going to post the links to the extensions I used in my presentation:

Moreover I spend a good time listening other three interesting talks and chatting with the people after the show. Thank you :)

2009/12/08

The danger of default files

Filed under: Security — Pedro Laguna @ 11:04 AM

During my current research I have found some default files that some web frameworks includes into their installations that can compromise the security of a website. It also can allow an attacker to determine which framework a web page is using.

The first of these files is from the symfony framework. They offer to the developers a useful script called frontend_dev.php which show internal information about the current install and the server. As you can see in the following screenshot the information can be very useful…

symponydebug

It’s deactivated by default and can be activated changing the “lib\config\config\settings.yml” file:

# Logging and debugging settings

web_debug: false # Enable the web debug toolbar

By default the framework is configure not to show the toolbar, but a lot of web pages (indexed by Google) have activate it and allow to any user to read the private data of their websites.

googlesympony

Moreover another default files that I found researching into the default Zend Server installation are the alias /server-info and /server-status. These are part of the mod_info module and, hopefully, in Zend Server, are configured to be access only from localhost:

<Location /server-info>

SetHandler server-info

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Location>

<Location /server-status>

SetHandler server-status

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Location>

This is a secure default configuration that other domains using this Apache module should adopt for the security of their web pages. This is a problem discussed sometimes ago with the revelation of the /server-status file in twitter.com. It’s also known that other servers like Apache.org are offering his status and his info, but you can also found a lot of websites sharing their server-status and server-info pages.

I have found that these default files are not include in the wordlist of wfuzz or even Wikto. I don’t know why are they ignoring these files, but I’m going to add these to my default dictionaries files :)

Cheers!

2009/08/11

Shorty Authentication Bypass

Filed under: cookies, PHP, Security — Pedro Laguna @ 10:11 PM

Today, reading some stuff at internet I have found an article about 7 PHP scripts to generate shorts URLs. This kind of links are very common today with a lot of controversy about the security risk that they implied. I’m not here (now) to discuss about shorting URL’s services but to talk about a stupid bug that I have found in the first (!!!) software that WebResourcesDepot recommend today.

Shorty is a script very old… From 2006. Why are they recommending it in the first place? Second: Did they try to install it? A lot of errors appears when you try a fresh install and some pain until you can fix it. Buggy from the scratch.

I then decided to read some source code. I have found that in functions.php is some bug that we can use to bypass the login form. Let’s go to read some php code:

function authenticate(){
    $cookie = @$_COOKIE['snickerdoodle'];
    if($cookie == "polarbears"){
        //
    } else {
        exit("Not logged in.");
    }
}

function verify(){
    if(@$_COOKIE['snickerdoodle']){
        $cookie = $_COOKIE['snickerdoodle'];
    } else {
        $cookie = '';
    }
    if($cookie == "polarbears"){
        return 1;
    } else {
        return 0;
    }
}

As you can read this code generates a cookie with the name “snickerdoodle” and the value “polarbears” to determine if you are authenticated or not. Its very easy to create a new cookie into your browser with this data with some Firefox extension. If you are using a browser without extensions like Google Chrome you can try to write the next javascript sentence into your URL:

javascript:document.cookie=”snickerdoodle=polerbears”;

If you don’t want to install Shorty (and mess around with all the hacks you have to do use it) you can always use the search intitle:”Shorty (Beta)” to found some places to test it.

Have fun!

2009/04/08

WordPress.com permanent XSS vulnerability

Filed under: Seguridad Informatica, XSS — Pedro Laguna @ 9:54 AM

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: 8bit

Hi,

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: 7bit

I 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 Vigilance Options with some simple Javascript

Equilibrio Inestable with XSS!!

This blog was XSSed!!!

Page code

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:

Google search

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.com

Hi,
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!

Older Posts »

Theme: Shocking Blue Green. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.