08 agosto 2009

2/4 - Wargame CP2009 - Pruebas de Web

Llegamos a la segunda publicación sobre las soluciones del concurso de hacking ético de la CampusParty 2009. Hoy explicando las pruebas de aplicaciones web.

El primer problema era muy sencillo, se mostraba un formulario de autenticación en el que un usuario necesitaba recordar su contraseña para acceder, como pistas se proporcionaba la opción de recuperarla mediante una pregunta secreta. La respuesta estaba escrita en twitter bajo un usuario con su mismo nombre. Para resolverla bastaba con buscar en los sitios habituales para "perfilar" al usuario.

En segundo lugar otro formulario de autenticación escrito en flash, para superarlo era necesario analizarlo con alguna herramienta y conocer a que cadena de caracteres correspondía un md5 incrustado en el código. fuente. La respuesta aparecía en cualquier web tipo rainbowtables.

Para la tercera prueba utilizamos las grandes manos de Pedro Laguna y su intenso conocimiento de XML XPath Injection, facilitándonos un formulario de autenticación vulnerable y un sistema de blogs igualmente vulnerable a este tipo de ataque. Para pasar la prueba había que obtener la contraseña que se encontraba en un comentario de uno de los ficheros XML.

Como cuarta y última prueba se configuró un directorio de Apache con la directiva <Limit> para los métodos GET y POST, por lo que se solicitaba autenticación básica para acceder. Para saltarse esta restricción se puede aplicar una vulnerabilidad explicada por dos grandes hackers españoles, Frame y Madj0ker, en su documento "Bilbao Method Exposed".

Una vez con acceso al directorio se permitía ejecutar un PHP sencillo de autenticación "login.php", que era vulnerable a un Blind SQL Injection en MySQL y con el que se obtenía la contraseña para terminar la fase. La gracia de la prueba consistía en que todos los participantes tuvieron que modificar todas las peticiones web para sustituir los GETs por otro método distinto, algo que se puede hacer con herramientas de auditoría web como Burp Proxy.


6 comments :

vierito5 dijo...

para la tercera prueba:
http://bxpi.codeplex.com/

Anónimo dijo...

¿Cual era la inyección SQL que había que hacer en la prueba 4?

¡Gracias!

Alejandro Ramos dijo...

@vierito5: tu lo llegaste a usar?

@Anónimo: pues uno sencillote: en login.php el parámetro "id" permitía inyección en:

$sql = "SELECT * FROM users WHERE id=".$_GET['id'];

Vamos, sqlmap o incluso nuestra vieja bsqlbf sacaría el resultado..

vierito5 dijo...

El login lo saltabas con a"="a" or "a"="a" or "a"="b en el campo del usuario y cualquier cadena como contraseña. Una vez dentro, en el panel ese de mensajes usando esa herramienta.

jgaliana dijo...

Hola,

La 4a prueba tenía una mezcla de conocer el tema del bypass en módulos de Apache, cosa que aún no conociendo el paper de la técnica bilbao, si había investigado por mi cuenta. Sumado a tener la idea feliz del login.php, que en este caso, fue de los primeros en probar.

Después de esto el blind sql injection se veía claro... y para el tema de modificar el método on the fly, con burp suite o paros proxy se podía hacer muy cómodamente.

Saludos!

nonroot (c) 2008/2009 dijo...

Hola!
ya tengo un "solucionario" de los retos de seguridad en web, si tienen rspuestas para algunas de las inquietudes les agradezco.

Buen trabajo!

link: http://nonroot.blogspot.com/2009/08/how-to-pass-wargame-cp-2009-web.html