Burpsuite - SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Datos Generales
- Software: Burpsuite Community
- Dificultad: Fácil
- Duracion: 10 minutos
- Observaciones: Se realizo la inyección de manera simple desde la url.
- CVSS 3.1: AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:L 9.1 Crítico
Reconocimiento
- Dada la naturaleza del laboratorio se presento un solo endpoint category el cual se mostraba vulnerable a la inyección.
Explicación de la vulnerabilidad
La vulnerabilidad afecta a una base de datos que no tiene consultas parametrizadas y/o no esta sanitizada, lo que permite la inyección de código en una petición.
Una consulta esperada a la base de datos tiene la siguiente forma:
...academy.net/filter?category=Corporate+gifts
Y en la Base de Datos se ve de la siguiente manera:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
en este sentido realizar la prueba de inyección SQL utilizando la prueba clasica ‘or1=1– donde:
- ‘: Se utiliza para terminar el valor esperado del campo category.
- OR: Operador lógico que permite ingresar una condición verdadera o no con la intención de evadir controles.
- 1=1: Condición que siempre es verdadera.
Solución del laboratorio
Podemos notar que existe un menu de busqueda que permite ingresar a categorias de los productos de la web

Notamos que ingresando por ese menu la web despliega la siguiente url

Insertamos el payload en la url de la siguiente manera:
https://0a2e006a04e7be4f8222664a00b10018.web-security-academy.net/filter?category=%27+or+1=1--
Dando como resultado la solución del laboratorio

Mitigación
-
Realizar consultas parametrizadas Evitar la concatenación de entradas de usuario en las consultas.
-
Validación de entradas Asegurar que las entradas de usuario sean saneadas y validadas antes de procesarlas.
URL del laboratorio: https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data