Laboratorio: el control de acceso basado en URL se puede eludir
Last updated
Last updated
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.
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 :)