Ataque de Truncado SQL (SQL Truncation): Prueba de Concepto y Explicación
El ataque de truncamiento SQL, conocido también como SQL Truncation, es una táctica empleada por atacantes para manipular consultas SQL de manera maliciosa en una base de datos. Es decir en la configuración de la base de datos en la que una entrada se trunca (elimina) al agregarse a la base de datos debido a que supera la longitud máxima definida. El sistema de gestión de la base de datos truncará cualquier valor recién insertado para que se ajuste al ancho del tamaño de columna designado.
Imaginemos una situación común en la que una aplicación web tiene un campo de entrada limitado, como el de correo electrónico, y no realiza una validación adecuada de los datos ingresados.
Uno de los campos requeridos es la de correo electrónico, limitada a 17 caracteres en la base de datos.
Si el usuario «[email protected]» ya está registrado, intentar crear otra cuenta con la misma dirección sería bloqueado. Pero, si un atacante intenta registrar«[email protected] a», que tiene 18 caracteres, el sistema lo truncaría a «[email protected]» debido a su límite de longitud.
¿Qué sucede con los espacios? Estos serán eliminados automáticamente, lo que significa que «[email protected] a» se convertirá nuevamente en «[email protected]». Así, el atacante podría registrarse con una dirección similar y potencialmente cambiar la contraseña del usuario existente.
Si la base de datos considera los espacios como caracteres válidos entre las entradas y no realiza ningún recorte antes de almacenar los valores, un atacante puede crear cuentas duplicadas de un usuario existente
PoC
Tras probar usuarios y contraseñas por defecto nos da la oportunidad de registrarnos y tas loguearnos encontramos el dashboard
Miramos la ruta dada con el alias «~».
Al igual que tendríamos desde consola
Teníamos una longitud máxima de 13, la cual hemos cambiado a 40, en este caso el usuario «jacob@tornado a» se convertirá en «jacob@tornado» omitiendo los espacios y la a, debido a que la base de datos no a realizado una validación correcta y hemos ampliado el limite de longitud máxima para ese campo
Tras loguearnos tenemos acceso al panel en con el correo que hemos truncado
