Manual completo de SQLMap en Español

editado abril 2017 en Servidores y Hardening
SQLmap es una de las herramienta más conocidas para hacer ataques SQLi (SQL Injection) escrita en Python. SQLmap se encarga de realizar peticiones a los parámetros de una URL que se le indiquen, ya sea mediante una petición GET, POST, en las cookies, etc. Es capaz de explotar todo tipo de SQLi como union-base, time-base-blind, base-blind-injection, heavy-queries, etc.

22uxp1poh7cf.png


SQL Injection es una técnica de ataque a paginas o aplicaciones, que intenta inyectar código SQL dentro de la aplicación destino, para acceder a información sensible. Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos.

Permite realizar de manera automática 6 técnicas de ataques:

  • boolean-based blind
  • time-based blind
  • error-based
  • UNION query
  • stacked queries
  • out-of-band

El operador UNION se utiliza en las inyecciones SQL para unirse a una consulta, deliberadamente forjada por el consultor, a la consulta original. El resultado de la consulta realizada se unirá al resultado de la consulta original, permitiendo que el consultor obtener los valores de los campos de otras tablas.

Blind SQLi o Ataque a ciegas por SQLi es otro método o alternativa a la tradicional SQLi, es utilizada cuando la web no tira ningún tipo de error ya que los webmasters han quitado la o desactivado el SHOW_WARNINGS y SHOW_ERRORS que son los encargados de imprimir errores en pantalla cada vez que se hace una petición errónea a la base de datos pero si podemos comprobar datos por medio de verdaderos o falsos y a lo largo de este paper veremos a que se refiere con esos verdaderos y falsos. El nombre Blind SQLi o SQLi a ciegas hace referencia a que los nombres de las tablas y demás datos que saquemos, lo haremos adivinándolo ya que no mostrara ningún error en pantalla.

  • Time based injection - Inyección basado en el tiempo
  • Blind injection - Inyección a ciegas.
  • Error based injection - Inyección en base a error
  • Normal injection - Inyección normal o ordinaria.

Técnicas

  • Boolean-based blind: se basa en una técnica que intenta extraer información carácter a carácter, insertando tras la consulta válida una consulta de tipo SELECT que comprobará si el carácter solicitado se corresponde con el carácter almacenado en la BD.
  • Time-based blind: utilizando un principio similar a la técnica anterior, esta vez la consulta SELECT introduce un delay en la BD que solo se ejecutará en el caso de que se cumpla la condición que posteriormente le permitirá al atacante obtener una respuesta de válido o inválido gracias a las esperas en la presentación de los resultados.
  • Error-based: esta técnica permite obtener información directamente de la información de error no controlada devuelta por la BD en la web atacada.
  • UNION query-based: se basa en añadir una consulta que empiece con UNION ALL SELECT, revelando información sensible solo si la aplicación web vuelca toda la información devuelta por la BD en la página web atacada.
  • Stacked queries: funcional solo en aquellos casos en los que la aplicación web permite la ejecución múltiple de consultas (separadas por ‘;’), y aprovecha esta funcionalidad para añadir todo tipo de consultas de ataque después de la consulta válida enviada.

SQLmap tiene soporte para distintos motores de base de datos:

  • MySQL
  • Oracle
  • PostgreSQL
  • Microsoft SQL Server
  • Microsoft Access
  • IBM DB2
  • SQLite
  • Firebird
  • Sybase
  • SAP MaxDB

Los comandos de SQLMap se agrupan según categorías:

  • Target
  • Request
  • Optimization
  • Injection
  • Detection
  • Techniques
  • Fingerprint
  • Enumeration
  • Brute force
  • User-defined function injection
  • File system access
  • Operating system access
  • Windows registry access
  • General
  • Miscellaneous.


Tutorial - Manual Uso básico SQLmap


--dbms=mysql
[..] Error: You have an error in your SQL syntax [..]
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in [..]
--dbms=mssql
Microsoft OLE DB Provider for ODBC Drivers error [..]
Server Error in ‘/’ Application. Unclosed quotation mark before the character string [..]
--dbms=orcale
java.sql.SQLException: ORA-00933: SQL command not properly ended at [..]

Requisitos - Dependencias

  • Python 2.6 o 2.7 (no funciona con 3.0)
  • gzip
  • ssl
  • sqlite3
  • zlib

Instalación clonando el repositorio git
git clone git://github.com/sqlmapproject/sqlmap.git
	cd sqlmap

Uso:
python sqlmap.py [opciones]

  • --url url (-u) con la variable vulnerable ejemplo elhacker.net/noticia.php?id=1
  • -p (buscar otra variable vunlerable) elhacker.net/noticia.php?id=1&user
  • --data si hay un formulario GET,POST los campos vulnerables
  • --level=n cinco niveles según dificultad
  • --dbs listar las bases de datos
  • --dbms motor de la base de datos (MySQL,SQL Server ,etc)
  • -D indicamos la base de datos a utilizar (-Database)
  • --tables mostrar las tablas disponibles
  • -t nombre de la tabla --columns
  • --dump vuelca resultados, mostrar contenido de las tablas
  • -C (Columnas) columnas a mostrar
  • --wizard ejecuta un asistente
  • --threads=n número de procesos (por defecto 1)
  • --delay=n segundos de espera entre peticiones http
  • --current-db base de datos que está usando actualmente
  • --current-user ver usuario que está ejecutando
  • --is-dba –current-db ver si el usuario es el dba de la BD
  • --privileges ver los privilegios del usuario (alter, create, drop, execute)
  • --file-read path (ruta) leer ficheros
  • --sql-shell obtener una sql en shell
  • --os-shell obtener shell en el servidor (asp es la 1, aspx 2, jsp 3, php 4) (si se poseen los suficientes privilegios y un FPD (Full Path Disclosure)
  • --headers= cabeceras del navegador
  • --random-agent cabeceras del navegador aleatorias
  • --time-sec= Segundos para retrasar la respuesta de DBMS (por defecto 5)
  • ---technique= : Se utiliza para seleccionar la técnica que se va a utilizar en la inyección ( B - E - U - S - T - Q.) Boolean-based, Error-based, Union, Stacked querys, Time-based, Inline queries
  • --flush-session

- Si el SQLi es Blind Boolean Based , se especifica con una "B"
- Si el SQLi es Error Based/Double Query , se especifica con una "E"
- Si el SQLi es Union Based , se especifica con una "U"
- Si el SQLi es Stacked querys , se especifica con una "S"
- Si el SQLi es Time Based , se especifica con una "T"
- Si el SQLi es Inline queries , se especifica con una "Q"

  • --forms si queremos que busque automáticamente los campos de formularios
  • --proxy= usar servidor proxy
  • --sql-query añadir consulta sql
  • --tamper= scripts ofuscación y bypass (ejemplo space2mysqlblank.py, charencode.py, base64encode.py, randomcomments.py, etc)
  • --chek-tor ---> User Tor Anonymity Network
  • --tor-port ---> Set Tor proxy port other than default
  • --tor-type ---> Set Tor proxy type (HTTP (default ), SOCKS4 or SOCKS5)

Listado completo en la documentación oficial:

https://github.com/sqlmapproject/sqlmap/wiki/Usage
Etiquetado:

Comentarios

Accede o Regístrate para comentar.