Equilibrio Inestable

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: PHP, Security, cookies — 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!

2009/02/15

El dia de los enamorados

Filed under: Firefox — Tags: — Pedro Laguna @ 10:40 PM

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 :P )

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:

url

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 ;)

historial

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.

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

2009/02/14

ZoomIt 3.02

Filed under: General, Personal, Trucos — Tags: , , , — Pedro Laguna @ 12:20 PM

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.

lupaPor 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 :P ) 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? :P

2009/02/10

¿Preguntas seguras?

Filed under: Humor, Seguridad Informatica — Tags: , — Pedro Laguna @ 9:30 AM

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…

2009/02/03

extended extended extended extended… validation certificate

Filed under: Firefox, General, Internet Explorer — Tags: , , , , , — Pedro Laguna @ 12:40 PM

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:

firefox3

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

ie
chrome

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.

2009/01/29

mas beta que gmail

Filed under: Firefox, Geek, Trucos — Tags: , , , — Pedro Laguna @ 12:17 AM

¡¡¡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 ;)

livehttpheaders

2009/01/28

la importancia de reportar un fallo

Filed under: General, Seguridad Informatica, Software Libre, XSS — Tags: , , , — Pedro Laguna @ 9:01 AM

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 :P ). 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!

2009/01/26

win7beta

Filed under: 1 — Tags: , , — Pedro Laguna @ 2:10 PM

Andaba yo trasteando un poco con el Ollydbg cuando me he encontrado con esta cadena metida en algun lugar de mi memoria:
waiterc
Interesante cuanto menos, a saber que sirve ese camarero… ¿Martini con vodka, mezclado, no agitado?

Older Posts »

Blog at WordPress.com.