Vulnerabilidad y Explotación de SQL Injection Manual y Automática
Clase 12 de 14 • Curso de Hacking: Aplicaciones Web Server Side
Resumen
¿Qué es SQL Injection y cómo detectarlo?
SQL Injection es una de las vulnerabilidades más conocidas en aplicaciones web. Esta técnica permite inyectar código SQL malicioso en una aplicación para manipular bases de datos. La identificación de esta vulnerabilidad es crucial para proteger tus aplicaciones.
-
Identificar la vulnerabilidad:
- Usar una comilla simple (
'
) en campos de texto puede revelar errores de sintaxis, indicando una posible vulnerabilidad. - Un error visible tras insertar la comilla simple indica que la aplicación es vulnerable, aunque la ausencia de error no lo descarta.
- Usar una comilla simple (
-
Analizar el código fuente:
- Revisar el código fuente de la página web actual para identificar cómo se manejan las consultas SQL.
- Entender que una variable de entrada, como un
User ID
, puede ser manipulada para incluir código malicioso.
¿Cómo ejecutar una inyección SQL básica?
Una vez confirmada la vulnerabilidad, puedes proceder a ejecutar inyecciones SQL para extraer información, todo con fines educativos y de pruebas controladas.
- Valorar la entrada:
- Las inyecciones simples usan combinaciones como
' OR 1=1 --
para manipular consultas y responder con más datos de los intencionados.
- Las inyecciones simples usan combinaciones como
' OR 1=1 --
-
Consultar columnas disponibles:
- Utiliza el
ORDER BY
para determinar cuántas columnas se pueden seleccionar en la consulta. - Usa secuencias binarias para encontrar el número exacto, disminuyendo progresivamente hasta que no se produzcan errores.
- Utiliza el
-
Ejecutar consultas de unión (Union Select):
- Integra diversas consultas seleccionando columnas específicas para revelar datos de interés como la base de datos o su versión.
' UNION SELECT database(), @@version --
¿Cómo extraer y filtrar información de la base de datos?
Una vez identificadas las vulnerabilidades y manipuladas las consultas, puedes explorar qué tablas y columnas existen en la base de datos.
- Explorar tablas y columnas:
- Consulta las tablas y columnas existentes a través de
information_schema
.
- Consulta las tablas y columnas existentes a través de
' UNION SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = DATABASE() --
- Extraer credenciales:
- Usa
Union Select
para acceder a tablas específicas comousers
y campos que almacenen usuarios y contraseñas.
- Usa
' UNION SELECT user, password FROM users --
¿Por qué automatizar las inyecciones SQL con SQL Map?
Las técnicas básicas de SQL Injection pueden transformarse en un proceso tedioso. SQL Map es una herramienta que automatiza el proceso de inyección, manejando diferentes niveles de complejidad y proporcionando acceso más rápido y seguro a la información deseada.
- SQL Map facilita:
- La identificación automática de vulnerabilidades.
- La ejecución de pruebas más eficientes.
- La extracción de datos de manera más estructurada y menos intrusiva.
La práctica y el conocimiento de estas técnicas deben ser utilizados con fines educativos y para mejorar la seguridad de las aplicaciones propias, nunca para actividades malintencionadas. El siguiente paso en esta exploración de seguridad web te introducirá a SQL Map y sus ventajas.