SQLinjection
Resumen: Una inyección SQL es un entorno mal configurado permitiéndonos así hacer consultas a la base de datos obteniendo información relevante.
Nota: El laboratorio utilizado en este post será desplegado con Docker y se puede encontrar en el siguiente enlace: laboratorio.Y se usará la herramienta automatizada SQLmap.
Procedimiento
Desplegamos el laboratorio y vemos que tenemos un panel de login, así que comprobamos manualmente si la inyección nos da un error confirmando así que es vulnerable.
' or 1=1-- -
En este caso lo que ha hecho la sentencia es un bypass del login permitiéndono saltarnos la autenticación. Pero como lo que nos interesa es sacar contraseñas y nombres de usuario, vamos a tirar de SQLmap.
Averiguando nombres de bases de datos existentes
SQLmap ya viene preinstalada en nuestro Kali, por lo que no tenemos nada más que ejecutar la herramienta. Para averiguar las bases de datos existentes el comando es el siguiente:
sqlmap --url url --dbs --forms --batch
Aquí lo que hacemos es pasarle a la herrmienta una url y decirle que queremos buscar bases de datos usando para ello los formularios existentes.
Vemos como nos encuentra los nombres muy rápido. Ahora y suponiendo que se tiene una base de como estan compuestas las bases de datos, vamos a ir escalando por sus distintas partes hasta llegar a sacar el password.
Ver tablas existentes
Vamos a ver las tablas de las que se compone la bse de datos evangelion_sqli.
sqlmap --url http://localhost:1337/dashboard/auth.php -D evangelion_sqli --tables --forms --batch
Vemos que tenemos dos tablas: Info y Users, nos centraremos en la segunda. Vamos a ver sus columnas.
Ver columnas
Lo hacemos con el siguiente comando:
sqlmap --url url -D nombre_db -T users --columns --forms --batch
Vemos que nos saca varias columnas, y la que nos interesa es password.
Ver contenido de password
Vamos a ver que contiene el campo password, lo haremos cambiando un poco el comando.
sqlmap --url 'http://localhost:1337/dashboard/auth.php/' -D evangelion_sqli -T Users -C nombre_columna --dump --dbs --forms --batch
Y ahí vemos las credenciales.