domingo, 22 de mayo de 2016

Introducción a SQLmap: ataques SQL Injection

El día de hoy hablaremos de SQLmap, una de las herramientas más conocidas y utilizadas para la automatización de inyecciones SQL (SQL Injection). Está escrita en Python y funciona realizando peticiones a los parámetros que se le indiquen a una url, ya sea mediante una petición GET, POST, en las cookies, etc. Por otra parte es capaz de explotar cualquier tipo de SQLi, como union-base, time-base-blind, base-blind-injection, heavy-queries...

Imagen 1:Introducción a SQLmap: ataques SQL Injection 

Como ya vimos en esta demostración básica de Injección SQL, esta es una técnica de ataque a páginas o aplicaciones web, que intenta inyectar código SQL dentro de la aplicación destino, para de esta forma poder acceder a información sensible. Inyección SQL es un método de inclusió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. 

Parámetros básicos de SQLmap
  • -url  url  (-u) con la variable vulnerable ejemplo: https://rememberhackingsite.php?id=1
  • -p (buscar otra variable vunlerable) https://rememberhackingsite.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 shel
  • --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

El listado completo lo tenéis en la documentación oficial:
https://github.com/sqlmapproject/sqlmap/wiki/Usage

SQLMap compara la página sin ningún tipo inyección, con la página con la inyección. Y en función de la variación entre ellas devuelve True o False (True si supera determinado ratio y False en el caso contrario).

Una vez sabemos todo esto pasaremos a ver un ejemplo, antes de nada necesitamos un objetivo sobre el que lanzar la herramienta. Una vez tengamos nuestro objetivo y hayamos comprobado que realmente es vulnerable a SQL Injection, es hora de ver lo que SQLmap es capaz de hacer.

Lo primero que vamos hacer será comprobar que nuestro objetivo es realmente injectable, para ello escribimos la siguiente instrucción:

sqlmap  -u url --dbs

Imagen 2: Instrucción para que nos muestre las las bases de datos

Imagen 3: Resultado de la petición para que nos muestre las bases de datos

Después de esto sqlmap nos devolverá como resultado el contenido de la base de datos. Para visualizar sus tablas tecleamos lo siguiente:

sqlmap  -u url -D nombredelabasededatos --tables

Imagen 4: Instrucción para que nos muestre las tablas

Imagen 5: Resultado de la petición para que nos muestre las tablas

Nos mostrará todas las tablas que contiene esa base de datos en concreto, ahora seleccionaremos la tabla que nos interesa para que nos muestre su contenido:

sqlmap  -u url -D nombredelabasededatos -T nombredelatabla --columns

Imagen 6:  Instrucción para que nos muestre las columnas

Imagen 7: Resultado de la petición para que nos muestre las columnas

Por último solo tenemos que añadir las columnas que creamos necesarias, y le agregamos la instrucción --dump para que se realice el volcado de datos.

sqlmap  -u url -D nombredelabasededatos -T nombredelatabla -C nombredelacolumna --dump

Imagen 8: Instrucción para que realice el volcado de datos

Imagen 9: Resultado del volcado de datos

1 comentario:

  1. Best Casinos Near Harrah's Resort Southern California - MapYRO
    Find 영천 출장안마 casinos with casino 강릉 출장샵 gaming, hotel, restaurants 여수 출장안마 near Harrah's Resort Southern California in 대전광역 출장샵 Funner. 세종특별자치 출장안마 Valley Center, CA Casino. 777 Harrah's Rincon Way

    ResponderEliminar