13 Abril, 2013 a las 14:57

mysqlSi habéis seguido el post inicial del curso os habréis dado cuenta de que SQLmap es una potente herramienta, mucho mas que un simple detector de SQLinjection es un potente framwork para la explotación de esta vulnerabilidad. En la pasada entrega aprendimos a buscar vulnerabilidades mediante las variables GET, a realizar consultas SQL y a volcar las bases de datos a nuestro disco duro, pero no debemos cerrarnos únicamente a las variables GET, ya que hay muchos apartados como buscadores, formularios de login que funcionan mediante las variables POST y Cookies lo cual supone cerca de un 70% de los “Inputs” de cualquier Web, por eso hoy veremos como buscar inyecciones de SQL en POST y Cookies. Además, aprenderemos a recolectar información acerca del usuario de la base de datos y sus permisos. Es muy importante tener en cuenta que para seguir este curso es necesario tener conocimientos de HTML y SQL Injection

Realizando un ataque hacia un formulario de login

Lo primero para esto es saber hacia que Web lanza la petición nuestro formulario, puesto que el lector de este curso tiene conocimientos de HTML no voy a reparar en explicar como saberlo, en nuestro caso la petición se hará contra checkuser.php, y los campos del formulario se llamarán inputUser e inputPassword

./sqlmap.py -u "http://ejemplo.com/checkuser.php" --data="inputUser=Admin&inputPassword=12345"

Como veis, igual que en los ejemplos anteriores introducimos la URL, pero despues añadimos el modificador --data, el cual define todos los datos que serán enviados mediante el método POST, las variables se separan con “&” igual que se hace en la cabecera.

Ahora imaginemos que solamente queremos analizar una variable y la otra queremos dejarla “fija”, para ello usaremos el modificador -p seguido de la variable que deseamos analizar, por ejemplo, en este caso sabemos que la variable inpuUser no es vulnerable, así que como no queremos perder tiempo vamos a realizar las pruebas únicamente con la variable inputPassword

./sqlmap.py -u "http://ejemplo.com/checkuser.php" --data="inputUser=Admin&inputPassword=12345" -p "inputPassword"

Hay que tener en cuenta que un formulario puede verificar otros campos como el nombre del botón que se ha pulsado para ser enviado, etc. Podemos ayudarnos de herramientas como Tamper Data, para obtener esta información o ver el código fuente de la página.

Si todo ha ido bien obtendremos una vulnerabilidad, si no podemos probar con el parametro --level=5 y --risk=3 para aumentar las posibilidades y complejidad de las consultas.

Captura

A continuación vamos a obtener toda la información posible del usuario actual, para ello en primer caso usaremos el modificador --current-user para averiguar qué usuario estamos utilizando.

./sqlmap.py -u "http://ejemplo.com/checkuser.php" --data="inputUser=Admin&inputPassword=12345" -p "inputPassword" --current-user
Captura

En este caso, al ser el usuario root sabremos que permisos tiene (todos) pero en caso de que sea un usuario diferente podemos saber que privilegios tiene usando el modificador --privileges

./sqlmap.py -u "http://ejemplo.com/checkuser.php" --data="inputUser=Admin&inputPassword=12345" -p "inputPassword" --privileges

Captura

Como vemos este usuario, al ser root tendría permiso a todo, desde consultas simples a ejecutar comandos o subir ficheros (cosas que aprenderemos en la siguiente entrega), también podriamos usar el comando --is-dba para ver si es administrador de la base de datos.

Lo último que explicaré hoy es cómo buscar vulnerabilidades de SQLinjection a través de las cookies, las cookies suelen ser un punto crítico en muchas páginas ya que los administradores muchas veces olvidan sanearlas ya que son ellos mismos quién las generan y olvidan que el usuario final puede modificarlas si quieren, por tanto es un punto a tener muy en cuenta a la hora de auditar una aplicación.

En nuestro ejemplo, usaremos un sitio que usa dos cookies, una llamada “sesion” y otra llamada “secreto”, el modificador a usar es --cookie=”id_cookie1=valor1&id_cookie2=valor2″

./sqlmap.py -u "http://ejemplo.com/web.php" --cookie="sesion=admin&secreto=prueba"
Captura

Y hasta aquí la entrega de hoy, en la próxima aprenderemos a leer ficheros locales del servidor vulnerado, ejecutar comandos y obtener una shell del sistema y subir ficheros

Acerca de Miguel Díaz

Informático, enamorado de la programación, diseño Web y el deporte.
Categorías: Internet, Pentesting, Seguridad, Utilidades. Etiquetas: , , , , , , , , .

3 comentarios en Curso de SQLmap a fondo – Parte 2 – Vulnerabilidades en variables POST, Cookies y obtención de información del usuario

  1.  adrian dice:

    amigo tienes facebook parea agregarte tengo problema scon una pagina web qe se deja injectar pero no se qe comandos usar en sqlmap…ayudame porfa

  2. Hola interesante el articulo. Que foros recomeindas sobre seguridad informatica ?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *