Descripción

This website has an unauthenticated admin panel at /admin, but a front-end system has been configured to block external access to that path. However, the back-end application is built on a framework that supports the X-Original-URL header.

To solve the lab, access the admin panel and delete the user carlos.

URL-based access control can be circumvented writeup

Entraremos al laboratorio y veremos una tienda online. Al querer entrar en ‘Admin panel’ nos dará un mensaje de acceso denegado:

Encontraremos esta petición en el ‘Logger’ de Burp Suite:

Y nos la llevaremos al ‘Repeater’ con Ctrl + R o Click derecho -> Send to Repeater, para modificarla. Allí añadiremos al final lo siguiente:

X-Original-Url: /admin

Al pulsar en enviar nos devolverá el contenido de la página:

Esto funciona porque ‘X-Original-Url’ le indica al servidor backend qué URL exacta estamos solicitando, ignorando el filtro del servidor frontend.

Cambiaremos la petición ahora tal que así:

  1. Pondremos el parámetro username y su valor en la ruta del get, debido a que en ‘X-Original-Url’ no podemos enviar parámetros.
  2. Pondremos el valor de ‘X-Original-Url’ a ‘/admin/delete’, para llamar al endpoint encargado de borrar al usuario.

Nota: Detrás del GET también se podría haber puesto ‘/admin/delete?username=carlos’, pero el valor de ‘X-Original-Url’ debe de ser ‘/admin/delete’.

Si está todo correcto, al enviar se nos devolverá el código 302, de usuario encontrado. Y al abrir el navegador veremos que el laboratorio se ha completado:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *