💉SQL Injection
La inyección SQL es una técnica de ataque a sistemas de bases de datos que explota vulnerabilidades en las aplicaciones web que interactúan con ellas, permitiendo ejecutar comandos en la BBDD.
Última actualización
La inyección SQL es una técnica de ataque a sistemas de bases de datos que explota vulnerabilidades en las aplicaciones web que interactúan con ellas, permitiendo ejecutar comandos en la BBDD.
Última actualización
Nota: Este tipo de técnicas son muy invasivas, ya que vamos a ganar acceso a distintos sistemas, por lo que no podemos utilizar estas técnicas sin un consentimiento o aprobación por parte del objetivo
Vamos a aprender a cómo explotar un SQL Inyection, para conseguir por ejemplo credenciales de acceso a una base de datos. Vamos a seguir una serie de pasos en un entorno controlado BWAPP:
Introducir una comilla simple o paréntesis en un input y ver si da un error de backend o sintaxis SQL. Si nos devuelve un error esa web es vulnerable a SQL Inyection.
Cambiar el 1 por otros números hasta donde de un fallo. Al introducir ' order by 8-- -
observamos que nos da el error, por lo que esta BBDD tiene 7 columnas.
Vemos que no muestra nada en el 1 y empieza a mostrar información desde el 2 (punto de inyección), vamos a cambiar estos números 2, 3, 4, 5, 6 y 7 por distintos comandos, para hacer distintas cosas:
Si la BBDD tiene por ejemplo 4 debemos indicarlas de la siguiente manera:
cn' UNION select 1,2,3,4-- -
Podemos sustituir mysql
por cualquier nombre de la tabla
Encontramos una tabla user
que nos interesa, donde podría haber información sensible
Con esta técnica un atacante podría saltarse el introducir una contraseña y acceder a un servicio web, solamente introduciendo el siguiente comando en el login:
Es la herramienta por excelencia para la explotación de SQL inyection
Interceptar petición con BurpSuite -> seleccionar todo -> botón derecho -> copy to file a archivo.txt
La siguiente sección estará dedicada completamente a esta herramienta, donde la veremos en profundidad con ejemplos de uso:
💉SQLMapComandos | Descripción |
General | |
| Login en la base de datos mysql |
| Mostrar todas las bases de datos |
| Usar una base de datos |
Tablas | |
| Añadir una nueva |
| Mostrar todas las tablas |
| Mostrar las propiedades de una tabla |
| Añade valores a una tabla |
| Agregar valores a columnas específicas en una tabla |
| Actualizar valores de la tabla |
Columnas | |
| Mostrar todas las columnas de una tabla |
| Mostrar columnas específicas en una tabla |
| Borrar una tabla |
| Añadir nueva columna |
| Renombrar columna |
| Cambiar tipo de datos de columna |
| Borrar una columna |
Output | |
| Ordenar por columna |
| Ordenar por columna descendente |
| Ordenar por dos columnas |
| Mostrar solo los dos primeros resultados |
| Mostrar solo los dos primeros resultados a partir del índice 2 |
| Enumerar resultados que cumplen una condición |
| Listar resultados donde el nombre es similar a una cadena determinada |
División (/
), Multiplicación (*
), y Modulos (%
)
Adición (+
) and Sustracción (-
)
Comparación (=
, >
, <
, <=
, >=
, !=
, LIKE
)
NOT (!
)
AND (&&
)
OR (||
)
Payload | Descripción |
Auth Bypass | |
| Omisión de autenticación básica |
| Omisión de autenticación básica con comentarios |
Union Injection | |
| Detectar el número de columnas usando |
| Detectar el número de columnas usando |
| Union injection básico |
| Union injection para 4 columnas |
DB Enumeration | |
| Fingerprint MySQL con query output |
| Fingerprint MySQL sin output |
| Nombre de la base de datos actual |
| Listar todas las bases de datos |
| Enumerar todas las tablas en una base de datos específica |
| Enumerar todas las columnas de una tabla específica |
| Volcar datos de una tabla en otra base de datos |
Privileges | |
| Encontrar usuario actual |
| Encuentra si el usuario tiene privilegios de administrador |
| Busca todos los usuarios con privilegios |
| Encontrar a qué directorios se puede acceder a través de MySQL |
File Injection | |
| Leer archivo local |
| Escribir una cadena en un archivo local |
| Escriba un shell web en el directorio web base |
Con este plugin disponible para todos los navegadores tenemos a mano multitud de comandos para explotar SQL Injections.