martes 9 de marzo de 2010

SQLMap: Inyección SQL Automática

SQLMap es una herramienta para llevar a cabo inyecciones SQL realizada por Bernardo Damele (líder de proyecto) y Miroslav Stampar (Desarrollador). Es una herramienta desarrollada en Python y por tanto independiente del sistema operativo.

Una vez hecha la pequeña presentación de la herramienta, vamos a juguetear un poco con ella. Para las pruebas realizadas hemos utilizado:

  • DVWA versión 1.0.6 como aplicación vulnerable a SQL injection
  • SQLMap 0.7 como herramienta para realizar SQL injection
  • Mysql 5.0.51
  • Sistema Operativo, Debian
Accedemos a la aplicación DVWA con nuestras credenciales, accedemos desde el menú de la izquierda a la opción "SQL Injection":






La aplicación recibe un identificador numérico y devuelve qué usuario dispone de ese identificador. Por ejemplo, si introducimos un '1' como "user id" la aplicación nos devolverá 'admin'. La aplicación realiza la siguiente consulta SQL sobre la base de datos, "SELECT first_name, last_name FROM users WHERE user_id = '$id'", recibiendo como parámetro el user_id. En el caso de no realizar un buen tratamiento del identificador un atacante podrá realizar una inyección SQL.

Vamos a probar qué sucede si introducimos una comilla seguida de un identificador numérico:



Como vemos se produce un error que nos indica que estamos ante una "posible" inyección SQL. En este caso concreto sabemos a ciencia cierta que existe, así que ahora vamos a ver cómo se comporta SQLMap, para ello lanzamos SQLMap pasándole la URL y los identificadores de sesión:

$> sqlmap.exe --url="http://192.168.72.133/webapp/dvwa/vulnerabilities/sqli/index.php?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=5c8195bf7834edb2e4ab7b6eae6af45f"

Resultado obtenido:



Nosotros sabemos que el parámetro id es vulnerable a SQL injection y que la base de datos es Mysql, pero en este caso SQLMap parece no darnos el resultado esperado, ¿por qué?. SQLMap compara la página sin ningún tipo inyección con la página con la inyección y en función de la variación entre ellas devuelve True o False (True si supera determinado ratio y False en el caso contrario). En nuestro caso si la inyección deriva en una página de error (por lo que no está bien construida) esta varía mucho de la página sin ningún tipo de inyección; por el contrario si la inyección resulta exitosa devolverá en el campo ID nuestra inyección, dejando igual los campos "First name" y "Surname". En la ejecución anterior SQLMap no funciona de manera correcta porque el campo ID con nuestra inyección hace variar demasiado la página. Si vamos haciendo una traza de la ejecución observamos que es en el fichero "comparison.py" donde devuelve "False" en base a dos valores, ratio y conf.matchRatio.



Añadimos dos líneas a este fichero, 'logger.info(ratio) y logger.info(conf.matchRatio)', para observar qué valores tienen las variables ratio y conf.matchRatio cuando realiza una inyección que efectivamente debería surtir efecto:



Como vemos la página con la inyección varía "demasiado" para ser detectado por nuestra sensible herramienta. Para ayudarla un poco vamos a utilizar el parámetro "--string", con el objetivo de introducir una cadena que esté siempre en la página sin inyección y en la página con una inyección que debiera volver True. Por contra esta cadena no debería estar cuando devuelva False. En este caso si introducimos como "id=1", sabemos que debe devolver admin cuando se produzca un True y no debe aparecer cuando devuelva False. Vamos a probar:

$> python -d /usr/bin/sqlmap --url="http://192.168.72.133/webapp/dvwa/vulnerabilities/sqli/index.php?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=5c8195bf7834edb2e4ab7b6eae6af45f" --string="admin"

Resultado obtenido:



Ahora que parece funcionar, vamos a obtener por ejemplo las bases de datos que posee la base de datos:

$> python -d /usr/bin/sqlmap --url="http://192.168.72.133/webapp/dvwa/vulnerabilities/sqli/index.php?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=5c8195bf7834edb2e4ab7b6eae6af45f" --string="admin" --dbs



Vemos que existen cuatro base de datos (dvwa, information_schema, mysql y wordpress281) en la base de datos. Llegados a este punto empieza la fiesta y ya podemos ir consultando con la herramienta diferentes aspectos de la base de datos, y que podéis consultar en el manual de SQLMap.

En una próxima entrada llegaremos un poco más lejos ..... a través de una inyección SQL. Espero que esta entrada os sirva para ver cómo toquetear SQLMap un poquito y empezar con lo divertido.

miércoles 3 de marzo de 2010

Windows Post-Explotation & Pass-the-Hash

El pasado viernes por la tarde, en las Conferencias FIST de Barcelona, tuvimos la oportunidad de dar una de las charlas de 45 minutos en las que explicábamos algunas técnicas que podemos realizar durante la realización de un test de intrusión una vez hemos conseguido hacernos con el control de una de las máquinas. Concretamente, repasábamos algunas de las técnicas que se pueden emplear en sistemas Windows.

Entre las técnicas mencionadas, comentamos como se pueden aprovechar los fallos existentes en el antiguo Hash LANMAN utilizado aún por Microsoft por motivos de compatibilidad para obtener las contraseñas de una forma más fácil y rápida. Otra de las técnicas mencionadas consistía en la utilización de hashes que no habían podido ser crackeados debido a la robustez de la clave, pero que igualmente podían ser utilizados empleando técnicas de Pass-the-Hash para lograr propagar nuestra intrusión en el resto de los equipos sin necesidad de conocer la contraseña.
Podemos descargar la presentación o verla directamente a través de Scribd:




También podemos ver un pequeño video de las demostraciones que me llevé preparado por si me fallaban las maquetas, o el ordenador, o algo:




En el video podemos ver como, tras una intrusión en el sistema XPOWNED, robamos los hashes y los intentamos crackear utilizando las conocidas debilidades del algoritmo LANMAN de Microsoft. Sin embargo, una de las contraseñas se nos resiste tanto al ataque de diccionario como al de fuerza bruta, así que aplicamos sobre este Hash las técnicas de Pass-the-Hash. Para ello, utilizamos el Pass-the-Hash Toolkit (PSH) que como vemos cambia en la memoria de nuestro propio Windows las credenciales para sustituirlas por las credenciales del usuario suplantado, y a partir de ahí, a todos los efectos somos ese usuario en la red. Por último usamos el módulo PSExec de Metasploit para ejecutar comandos en el sistema XPTARGET. Para más información podeis consultar la presentación.

Por último, agradecer a todas las personas que vinieron el interés mostrado por nuestra charla. Esperamos que resultara interesante y esperamos también poder contar con vosotros para las sucesivas charlas que nos inviten a dar, que esperemos que sean muchas ;)

Lamento la tardanza en poner el post, pero lo de los videos se me sigue resistiendo, aunque parece que ahora, por fin, ya lo tengo solucionado ;P

Saludos a todos!

viernes 19 de febrero de 2010

Pentester.es participa en las Conferencias FIST

El próximo día 26 de Febrero tienen lugar en Barcelona las Conferencias FIST, que como ya sabréis generalmente se celebran alternativamente en Madrid y en Barcelona.

En Barcelona concretamente, ya llevan un par de años teniendo lugar dentro del contexto de la Fiberparty, una LANParty tradicional de esta ciudad que fue montada originariamente por estudiantes de la Facultad de Informática de Barcelona (UPC) en la que podemos tener acceso, además de los típicos torneos de los juegos más conocidos, a charlas y conferencias muy interesantes, e incluso un concurso de Hacking.

Si después de leer esto estáis pensando en apuntaros corriendo... lo siento, pero las entradas están ya agotadas a falta aún de dos semanas para el evento, aunque creo que si estáis interesados en las conferencias sí se puede asistir a ellas con un pase de visitante.

El caso es que hemos recibido una invitación por parte de la Organización de las Conferencias FIST para realizar una de las tres charlas que se impartirán en esta edición de las conferencias. El tema:

Windows Post-Explotation & Pass the Hash

La charla constará de 45 minutos en los que explicaremos alguna de las técnicas que podemos usar en la post-explotación de los sistemas Windows y un par de demostraciones en vivo de las herramientas y las técnicas.

Esperamos que el tema sea de vuestro interés y que aquellos que nos leen y tengan la oportunidad de estar por Barcelona se pasen a saludarnos.

Hasta entonces! Nos vemos en las FIST! ;)