15 nov 2011

BadStore, SQLi y otras chicas del montón

Buenas a todos otra vez, como no me quedé demasiado a gusto con que mi primer post aquí fuese “de opinión” me gustaría compartir una de las demos que no me dio tiempo a hacer (error de principiante :) en el HM.

No me voy a extender explicando lo que es un SQLi o inyección SQL porque en este blog hay información más que suficiente sobre el tema. El entorno que voy a utilizar es el siguiente:

- Badstore: Máquina virtual con aplicación web vulnerable.

- W3af: Escáner de vulnerabilidades web.

- SQLMap: “automatic SQL injection and database takeover tool”

NOTA: En este artículo de este mismo blog se explica como obtener la máquina virtual y ponerla andar.

El primer paso es identificar las vulnerabilidades, como sabéis, la forma típica suele ser introducir alguna comilla en algún formulario. Si probamos a pasarle una doble comilla en el campo “Search” pasa lo siguiente:

Vemos que tiene toda la pinta de que va a ser vulnerable :).

Para intentar encontrar más vulnerabilidades de este tipo vamos a utilizar el escáner W3af. Más de una vez escuché que la interfaz gráfica no va demasiado fina, lo cual es verdad si seleccionamos demasiados plugins, pero usando los típicos como “sqli” y “xss” no suele dar problemas. Por supuesto que no va a encontrar todas las vulnerabilidades de una aplicación, al igual que cualquier otro software de este tipo, pero está al nivel de los de pago en cuanto a las detecciones, aunque suele encontrar más falsos positivos que éstos.

Como vemos en la imagen la interfaz es sencilla de configurar, simplemente elegir “empty profile” y veremos que los plugins están colocados por grupos. Del grupo “Audit” seleccionamos “sqli” y de “Discover” hacemos lo propio con “webSpider”. Para la salida es cómodo seleccionar que, a mayores de mostrar los resultados en la propia aplicación, los almacene en otro formato para su posterior consulta, elijo “html” en este caso.

Al pulsar en el botón iniciar veremos como empieza a trabajar:

Y tras finalizar nos mostrará los resultados encontrados, 6 SQLi en este caso. Si seleccionamos en alguno, podemos consultar con más precisión que parámetro es vulnerable y la cadena con la que lo descubrió:

Podemos consultar además los resultados en formato html:

En este punto tenemos localizados los parámetros vulnerables, así que llegó el momento de explotarlos. Para hacerlo también de forma automática utilizaremos la herramienta SQLMap, lo primero es confirmar que no estemos ante un falso positivo, yo suelo hacerlo pidiéndole que identifique la versión del SGBD que utiliza la aplicación con el siguiente comando:

NOTA: En este ejemplo se intenta atacar el parámetro “searchquery”.

./sqlmap.py -u "http://192.168.122.63/cgi-bin/badstore.cgi?searchquery=hi&action=search&x=0&y=0" -b

Como vemos que parece que funciona le decimos ahora que nos identifique el nombre de la BD que utiliza la aplicación:

./sqlmap.py -u "http://192.168.122.63/cgi-bin/badstore.cgi?searchquery=hi&action=search&x=0&y=0" --current-db

Podríamos decirle también que intente identificar las tablas de esa BD, esto llevará un rato porque prueba con los nombres comunes:

./sqlmap.py -u "http://192.168.122.63/cgi-bin/badstore.cgi?searchquery=hi&action=search&x=0&y=0" --tables -D badstoredb

Ahora haríamos lo mismo para las columnas y seguiríamos utilizando los parámetros que nos ofrece la herramienta hasta obtener la información que creamos oportuna. Enumero aquí algunos interesantes para los que os apetezca probarlos ;)

wizard, is-dba, tor, gpage, cleanup, beep, current-user, dump[-all], agent ...

 

2 comentarios:

  1. Buen post!, Havij es otra herramienta que a mi me gusta para buscar Inyecciones SQL. Link por si os interesa:Havij v1.15 Advanced SQL Injectionhttp://itsecteam.com/en/projects/project1_page2.htmGracias por el post!

    ResponderEliminar