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