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 

    Este tipo de ataque aprovecha la falta de validación en la aplicación web, lo que permite al atacante manipular las consultas SQL para realizar acciones maliciosas como modificar o eliminar datos, acceder a información confidencial o tomar el control de cuentas de usuario.

    Una cosa a tener en cuenta al crear una cuenta duplicada como administrador es que no garantiza que tendrá privilegios de administrador. Algunas bases de datos utilizan columnas de permisos para especificar los privilegios de la cuenta.

    Para prevenir este tipo de ataque, es crucial validar adecuadamente todos los datos de entrada del usuario, incluyendo longitud y formato, antes de utilizarlos en consultas SQL.



PoC

    
    En esta prueba de concepto utilizaremos el laboratorio tornado de VulnHub

    Tenemos un panel del login


Tras probar usuarios y contraseñas por defecto nos da la oportunidad de registrarnos y tas loguearnos encontramos el dashboard


   Si nos fijamos en el código fuente podemos encontrar distintas rutas, en la cual, una de ellas nos esconde un alias


    Miramos la ruta dada con el alias "~". 
    Al igual que tendríamos desde consola


    Y encontramos numerosos usuarios, si intentamos registrar alguno nos lo impedira


    Obviamente esta ya registrado, y aquí es donde entra en juego el truncado


    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


    Y además en este caso tiene una vulnerabilidad RCE con lo cual nos podemos enviar una reverse shell



Os dejo un video realizando una prueba de concepto en el canal de YouTube





No hay comentarios:

Publicar un comentario