¿Cómo inyectar SQL?
SQL (Lenguaje de Consulta Estructurado) es una herramienta para interactuar con las bases de datos.
En el mundo de las aplicaciones web, las bases de datos son un componente clave para almacenar y gestionar información, permitiendo la presentación de contenido dinámico a los usuarios.
Vamos a mostrarte como inyectar SQL para identificar vulnerabilidades y reportarlas a los dueños de la web o si tienes autorización a los dueños de la aplicación web, nuestro enfoque siempre va dirigido al hacking ético.
¿Qué es una SQL injection?
El ataque de inyección SQL, también conocido como SQLi, es un tipo de ataque a aplicaciones y sitios web que insertar líneas de código SQL en la aplicación, con el objetivo de acceder a información confidencial en la base de datos.
Desde su descubrimiento, la prevención de la inyección SQL ha sido una de las mayores prioridades de los desarrolladores web. A pesar de los avances en la seguridad, estos ataques siguen siendo una amenaza frecuente en la actualidad. Estos ciberataques son comunes debido a la ausencia de validación adecuada de los datos de entrada de los usuarios. Durante una prueba de penetración, es fundamental asegurarse de que los datos proporcionados por los clientes no se combinen con el código ejecutado por el servidor, ya que esto puede ser considerado una debilidad potencial.
¿Cómo hacer una inyección SQL?
Vamos a mostrarte como inyectar SQL e una DVWA (Damn Vulnerable Web App), una web vulnerable que permite ejecutar ataques para practicar. Para preparar el entorno virtual necesitarás:
- Instalar o abrir una máquina virtual con el sistema operativo de pentesting Kali Linux.
- Instala la aplicación DVWA.
- Una vez instalada, ingresa a la dirección del servidor de la página web y inicia sesión con las credenciales por defecto, que son “admin” y “password”. Ten en cuenta que estas credenciales están intencionalmente vulnerables.
- Luego, en la pestaña de “DVWA Security”, elige el nivel más bajo de seguridad de la aplicación, que es “Low”. Finalmente, accede a la pestaña “SQL Injection”, donde encontrarás un campo de entrada llamado “User ID” y el botón “Submit” al lado.
Para determinar si la entrada de la página “User ID” es vulnerable a la inyección de SQL, realizaremos algunas pruebas.
Primero, probaremos ingresando una comilla sencilla, es decir: ‘. Si la página muestra un error, es probable que sea vulnerable. Luego, ejecutaremos el siguiente comando:
3′ and ‘1’=’1
Si la base de datos nos devuelve una respuesta normal, esto indica que la aplicación está siendo vulnerable a la inyección de SQL. Por último, ejecutaremos el siguiente comando:
3′ and ‘1’=’0
Si la base de datos NO nos da una respuesta, esto indica que la aplicación está siendo vulnerable a la inyección de SQL, ya que la condición dada es falsa.
Ejecutar una payload
Ahora que hemos determinado que la aplicación es vulnerable a la inyección de código SQL, vamos a aprender cómo ejecutar un payload efectivo. Hay diferentes tipos de payloads que puedes utilizar dependiendo de la vulnerabilidad de SQL, pero para empezar vamos a utilizar el más básico:
‘ o ‘a’=’a
Este payload simple le indicará a la base de datos de la aplicación que muestre todos los usuarios registrados en pantalla. Es importante recordar que las inyecciones SQL son peligrosas y pueden permitirle a un atacante tomar control de un servidor o sistema.
SQLmap
Una vez que aprendas a realizar un ataque de inyección SQL, también puedes utilizar herramientas automatizadas para detectar y explotar vulnerabilidades de este tipo. Uno de los programas más populares es SQLmap. Para utilizar SQLmap, abre la terminal de Kali y ejecuta el siguiente comando:
sqlmap
Este programa es eficiente en la detección de vulnerabilidades en una petición de una consulta SQL, brindando los payloads apropiados. También es posible acceder a las bases de datos y a la información contenida en ellas.
El aprendizaje de la inyección SQL es una habilidad valiosa para aquellos interesados en el hacking ético. Al conocer cómo atacar, también se pueden identificar y corregir las vulnerabilidades en las aplicaciones y sistemas, mejorando la seguridad de las empresas y protegiendo la privacidad de los datos de los usuarios.