¿Qué es sqlmap?SQLMap es una herramienta para explotar la vulnerabilidad de SQL injection. Esta herramienta automatiza el ataque para así explotar la página. Instalación de sqlmapPara empezar me gustaría dejar la página oficial aquí: Sqlmap es una herramienta que funciona en python en sus versiones: 2.6, 2.7 y 3.x en todas las plataformas, así que no hay problema para usarlo, personalmente lo he usado en windows, linux y en termux y en todas funciona exelente. Lo primero que tenemos que hacer es tener instalado git para poder clonar su repositorio oficial a nuestro dispositivo, el sitio en git es el siguiente: https://github.com/sqlmapproject/sqlmap.git para clonarlo usamos lo siguiente:
sqlmap-dev y ejecutamos el archivo sqlmap.py :
Uso básico de sqlmapPara ver las opciones de ayuda de esta herramienta basta con usar lo siguiente:
Lo que nos devolvera las opciones basicas para hacer un correcto uso de esta herramienta, algo que se tiene que entender bien es el correcto orden de ejecuion para agregar las opciones:
Algo que tenemos que tener en cuenta es que esta herramienta nos permite hacer escaneos desde el método GET y POST: Método GETSqlmap automaticamente usa el metodo GET para trabajar, la sintaxis nos queda de la siguiente manera:
Algo muy importante a tener en cuenta es que sqlmap escanea la página parametro por paramerto, esto significa que si tenemos una página con mas de un parámetro tenemos que especificar el parámetro que queremos analizar o escanear todos uno a uno. Método POSTPara usar el método POST tenemos que decirle a la herramienta que utilizarémos este método, para eso usamos:
Despues de declarar que usarémos el método post tenemos que declarar los parametros que vamos a analizar, para eso usamos:
Ejemplo:
Después de tener claro los métodos con los cuales podemos hacer el escaneo, tenemos que conocer las opciones basicas y generales para hacer un escaneo basico. En las opciones podemos resaltar las mas generales e importantes, por ejemplo:
Una vez que ya conocemos las opciones basicas de la herramienta vamos a ver un ejemplo de como usarla: Inyección sql básica paso a pasoPara este ejemplo simularemos que tenemos una página vulnerable por el método GET, usarémos la siguiente url:
Al empezar el escaneo, este de divide en partes: Escaneará la coneccion con la página. Escaneará la página en busca de algun WAF o IPS:
Al terminar el escaneo, nos aparecera algo como esto:
Esto significa que ya ha terminado el escaneo, que la página es
vulnerable y que conseguimos atacarla con exito. Lo siguiente es extraer
el nombre de la base de datos, para extraer el nombre de las bases de
datos vamos a usar la opcion
Al terminar vamos a tener los nombres de las bases de datos, algo como esto:
Con esto tenemos las bases de datos, en este ejemplo tenemos
Ahora, vamos a entrar a la base de datos
Al terminar el escaneo tenemos algo como esto:
Al terminar tenemos las siguientes tablas:
Lo siguiente es seleccionar una tabla y extraer las columnas dentro de ella:
Al terminar tenemos algo como esto:
Tenemos las siguientes columnas:
Por último tenemos que extraer el contenido de esas columnas:
Al terminar tenemos algo como esto:
Con esto ya tenemos extraida la informacion que hay dentro de las columnas. Una vez que hemos visto el uso básico para la utilización de esta herramienta vamos al siguiente paso, en el ejemplo anterior usamos como muestra una página inventada en donde todo funcionó desde la primera, pero siendo realistas no siempre pasa eso, siempre nos vamos a encontrar con sitios web mas "complicados" y es desde este punto en donde esto se hace mas interesante. vamos a ver el uso de TAMPERS Otras opciones importantes que vamos a ver son:
TAMPERSQué es un TamperUn tamper es un archivo en python que nos da la opcion de "camuflar" los payloads que usa la herramienta de sqlmap para asi poder "bypassear" algun WAF. Sqlmap cuenta con una gran variedad de Tampers para ayudar a que la inyección sql se cumpla, cada Tamper tiene su funcion y su compativilidad, en algunos casos estos pueden mezclarse para un mejor resultado. Podemos ver la lista completa de los tampers dentro de la repo de sqlmap
Funcion de un TamperCada tamper tiene su propia funcionalidad, en este caso vamos a ver solo unos ejemplos para ver como estan diseñados los tampers y ver su funcionamiento. como ejemplo vamos a analizar el tamper: randomcomments
podemos ver su funcion en una parte de su codigo:
Basicamente lo que hace es añadir comentarios en las palabras usadas en el payload, ejemplo:
¿Cómo usar los tampers?Para hacer uso de un tamper o varios tampers en el escaneo de un sitio web tenemos que especificarlo con la siguiente opcion:
si queremos usar mas de un tamper solo tenemos que usar una , para separarlos:
Entonces, tenemos la siguente linea con los tampers agregados:
Tampers mas usadosPara poder clasificar los tampers mas usados primero debemos separar los tampers para organizarlos, como mencioné antes, cada tamper es diferente y cada uno se usa para cosas distintas, por eso vamos a separar los tampers por bases de datos en donde funcionan: Tenemos lo siguiente: MySQL
MSSQL
MSAccess
PostgreSQL
SQLite
TechniquesOtro punto importante es conocer las tecnicas que utiliza esta herramienta. Como sabemos, sqlmap utiliza muchos tipos de payloads los cuales se clasifican en 6 partes, los cuales son:
Boolean-based blindBoolean-based blind significa que la vulnerabilidad se basa en valores booleanos (true or false) y se dice que es ciega por que no muetra alguna señal de que hay un error en la página. Error-basedError-based significa que la inyeccion se basa en los mensajes de error que el servidor responde y asi conocer un poco mas sobre la estructura de la base de datos que se esta usando. Union query-basedUnion query-based significa que estamos aprovechando que el operador UNION de sql puede ser usado, gracias a esto podemos combinar declaraciones que serán visualizadas como parte de la respuesta del servidor. Stacked queriesStacked queries significa que la vulneravilidad se basa en añadir mas consultas sql en serie, de esta manera mandar una consulta normal y al mismo tiempo mandar la consulta del atacante, todo esto solo dividiendo las consultas con un ";". Time-based blindTime-based blind es cuando la vulnerabilidad se basa en el tiempo, lo que significa que un atacante enviará una consulta sql obligano a la base de datos a esperar una cierta cantidad de tiempo, si el tiempo de respuesta del servidor es el mismo tiempo que el atacante declaró en la sentencia, esto significa que es vulnerable. Inline queriesInline queries consiste en unir una query sql dentro de otra y asi sucesivamente para ver si la sentencia es ejecutada. Ahora que ya sabemos cuales con las tecnicas y a que tipo de error de enfoca cada una, vamos a ver como utilizarlas. Para utilizar alguna tecnica deltro del escaneo tenemos que declarar la siguente opcion:
Esto es muy bueno, ya que la herramienta nos facilita mucho el trabajo pero al mismo tiempo esto hace que el escaneo tarde mas ya que escanea para todos los errores para detectarlo. Antes de hacer un escaneo tenemos que tratar de recolectar toda la informacion posible para que se nos haga mas sencillo el escaneo y ahorras mas tiempo, como por ejemplo detectar que error estamos viendo y asi declarar que tipo de error queremos explotar usando una tecnica para ese tipo de error en especifico, gracias a esto le decimos a la herramienta que se enfoque solamente en ese tipo de error y hacer mas rapido y directo el escaneo. por ejemplo:
Risk y LevelOtra cosa muy importante es conocer el "Risk" y Level": Risk: riesgo de que se produzca un error. Los payloads que menos riesgo tienen son las de riesgo 1, y las que más las de riesgo 2. Level: cantidad de peticiones por payload. El nivel 1 realiza pocas peticiones mientras que el nivel 5 realiza muchas. SQL-shellla opción Ejemplo:
SQL-queryla opción Sqlmap y dorksSqlmap tambien nos permite hacer una busqueda por dorks de google para encontrar paginas vulnerables, esto se hace con la siguente secuencia:
ejemplo:
Escaneos anonimos con TorUna de las partes mas importantes al hacer un trabajo en el área de la seguridad informatica es saber cuidarse un poco, para es el anonimato es esencial, en este caso vamos a usar TOR para filtrar las peticiones.
Fuente: https://github.com/Y000o/Inyeccion-sql-automatizada-con-sqlmap/blob/main/Inyeccion-sql-automatizada-con-sqlmap.md |