PortSwigger Access Control Web Privilege Escalation

Access Control

Técnicas para bypassear controles de acceso: parameter tampering, headers alternativos, method switching y más.

Parameter-based access control methods

Algunos sitios determinan los derechos de acceso con parámetros en la URL o cookies.

HTTP Request
https://insecure-website.com/login/home.jsp?admin=true
https://insecure-website.com/login/home.jsp?role=1

Broken access control via platform misconfiguration

Headers como X-Original-URL o X-Rewrite-URL pueden sobreescribir la ruta evaluada por el servidor.

Request
GET / HTTP/2
Host: 0a6c0027035d60d083b7b1aa004d0048.web-security-academy.net
Cookie: session=5JYfrQ0obu6byVdzZ7SgPcOlKAbUWxyG
X-Original-Url: /admin
X-Rewrite-URL: /admin

Method-based access control bypass

Probar hacer la consulta de administrador o del rol que no tengamos de GET→POST o POST→GET.

User ID controlled by request parameter with unpredictable IDs

Verificar si el GUID existe en algún lugar de la página (posts, comentarios, perfiles públicos) para poder reutilizarlo.

User ID controlled by request parameter with data leakage in redirect

Verificar si antes de la redirección el servidor muestra información sensible en el body de la respuesta 302.

Referer-based access control

El servidor valida el header Referer para autorizar acciones admin. Se puede falsificar directamente.

Request
GET /admin HTTP/2
Host: 0a9b008503786a2d825d0b1100c90031.web-security-academy.net
Cookie: session=Cz9gehr20H38XmfcioW3sKiT9skRk8Rq
Referer: https://0a9b008503786a2d825d0b1100c90031.web-security-academy.net/admin-roles?username=wiener&action=upgrade