🐴Laboratorio: el control de acceso basado en URL se puede eludir

Interceptamos con burp y vemos que solicitud podemos tomar para modificar el encabezado de solicitud HTTP.

Aqui tenemos el test que hicimos directamente con el GET de /admin e intentamos añadir el encabezado X-Original-URL: /admin sin embargo nos devolvió el 403 de prohibido acceder “Acces denied”, pero intentandolo con la URL de GET /my-account añadimos el encabezado y efectivamente se reflejo el resultado mostrando el admin panel con las opciones de eliminar users. adjunto imagen →

Damos un show response in browser para ver:

Eliminamos al user Carlos ->

¿Por qué nos trae un error? basicamente porque esa url de ahi es diferente a la URL que nosotros anulamos la cual era /admin y esta es /admin/delete?username=carlos por ende nos va a traer un error de denied, entonces para ello la solución consiste en añadir el otro header X-Rewrite-Url y pasarle el endpoint de eliminación.

A esta petición le añadimos el X-Original-Url y hacemos todo lo anterior de añadir /admin, luego de eso añadimos el otro encabezado →

X-Original-Url: /admin/delete?username=carlos

Con eso lo que hacemos es, añadir el ?username=admin en la URL de my-account?username=admin

Aqui llega lo curioso, luego de esto si seguimos la redirección nos dirige a un “Acess Denied” con eso queda claro que por ahí no es, lo que hicé fue cambiar la ubicación del X-Original-Url: /admin/delete?username=carlos de primero para que automaticamente sea la primera URL que omita y el usuario pueda ser eliminado desde admin, cambiandolo esto fue la response renderizada:

Dice User eliminado Exitosamente, con esto ya queda claro que lo eliminamos aunque le doy en show response browser no me muestra nada sin embargo, de tanto probar, luego fui a la pagina del LAB y aparecía SOLVED! ✅

Laboratorio resuelto exitosamente.

Request del laboratorio:

Eso es todo, si llegaste hasta aquí y entendiste el laboratorio pues te felicito, sin más que decir gracias por leerme hasta la próxima :)

Last updated