Saltar al contenido

¿Cómo usar SQLMAP para Buscar Vulnerabilidades de Inyección en SQL?

6 junio, 2019

SQLMAP es una herramienta de código abierto que automatiza el proceso de detección y explotación de Vulnerabilidades de inyección de SQL como acceso a servidores de bases de datos.

Su arquitectura está bien diseñada y viene con un potente motor de detección, así como muchas características que le permiten ir más allá de la recopilación de datos de una base de datos.

El acceso al sistema de archivos subyacente y la ejecución de comandos en el sistema operativo. En este breve artículo veremos cómo aprovechar las vulnerabilidades.

Que pueden permitir cargar un shell en el servidor e incluso cambiar la contraseña del usuario administrador mediante la ejecución de comandos con SQLi.

¿Cómo usar SQLMAP para Buscar Vulnerabilidades de Inyección de SQL?

Listar información Sobre las Bases de Datos Existentes

Entonces, primero, tenemos que ingresar la URL web que queremos verificar junto con el parámetro -u. También podemos usar el parámetro –tor si deseamos probar el sitio web utilizando proxies.

Ahora, normalmente, nos gustaría probar si es posible obtener acceso a una base de datos. Así que usamos la opción –dbs para hacerlo. –Dbs lista todas las bases de datos disponibles.

Ingresemos a la Página de Pruebas

sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 –dbs

Obtenemos la salida que nos muestra que hay dos bases de datos disponibles. A veces, la aplicación le dirá que ha identificado la base de datos y le preguntará si desea probar otros tipos de bases de datos.

Puedes seguir adelante y escribir ‘Y’. Además, puede preguntarle si desea probar otros parámetros para detectar vulnerabilidades.

Escriba “Y” aquí, ya que queremos probar a fondo la aplicación web. Observamos que hay dos bases de datos, acuart e information_schema.

Listar Información Sobre Tablas Presentes en una base de Datos Particular

Para probar y acceder a cualquiera de las bases de datos, tenemos que modificar ligeramente nuestro comando. Ahora usamos -D para especificar el nombre de la base de datos a la que deseamos acceder.

Una vez que tengamos acceso a la base de datos, querremos ver si podemos acceder a las tablas. Para ello, utilizamos la consulta –tables. Permítanos acceder a la base de datos de acuart.

sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 

-D acuart --tables

Veremos que se han recuperado 8 tablas. Así que ahora definitivamente sabemos que el sitio web es vulnerable.

Listar Información Sobre las Columnas de una Tabla en Particular

Si queremos ver las columnas de una tabla en particular, podemos usar el siguiente comando, en el que usamos -T para especificar el nombre de la tabla y –columnas para consultar los nombres de las columnas.

Intentaremos Acceder a la Tabla ‘artists’

sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 

-D acuart -T artists --columns

Volcar los Datos de las Columnas

De manera similar, podemos acceder a la información en una columna específica mediante el siguiente comando, donde -C se puede usar para especificar el nombre de varias columnas separadas por una coma.

La consulta –dump recupera los datos:

sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1

-D acuart -T artists -C aname --dump

Podemos ver que hemos accedido a los datos de la base de datos. De manera similar, en sitios web tan vulnerables, podemos explorar literalmente a través de las bases de datos para extraer información.

Prevenir la Inyección de SQL

La inyección de SQL generalmente se puede prevenir usando declaraciones preparadas. Cuando usamos una declaración preparada.

Básicamente estamos usando una plantilla para el código y analizando el código como la entrada del usuario por separado. No mezcla la consulta introducida por el usuario y el código.

En el ejemplo dado al principio de este artículo, la entrada ingresada por el usuario se inserta directamente en el código y se compilan juntas, por lo que podemos ejecutar código malicioso.

Para las declaraciones preparadas, básicamente enviamos la consulta de SQL con un marcador de posición para la entrada del usuario y luego enviamos la entrada del usuario real como un comando separado.

Considere el Siguiente Segmento de Código PHP

$db = new PDO('connection details');
$stmt = db->prepare("Select name from users where id = :id");
$stmt->execute(array(':id', $data));

En este código, la entrada del usuario no se combina con la declaración preparada. Se compilan por separado. Entonces.

Incluso si el código malicioso se ingresa como entrada del usuario, el programa simplemente tratará la parte maliciosa del código como una cadena y no como un comando.

SQLMap es una buena herramienta cuando se trata de detectar y explotar vulnerabilidades de inyección de SQL. Con tantas opciones compatibles.

Interruptores y la capacidad de crear y utilizar el script personalizado, se destaca de las muchas herramientas de código abierto para probar la vulnerabilidad de inyección de SQL.

¿Cómo usar SQLMAP para Buscar Vulnerabilidades de Inyección en SQL?
5 (100%) 1 vote[s]