🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónEl control de acceso roto y su matriz de roles
4 tareas · 35 min · Principiante
El control de acceso es la categoría que más aplicaciones suspende, y no se prueba buscando un truco: se prueba comparando lo que el diseño dice que cada rol puede hacer con lo que la aplicación hace de verdad. Esa comparación tiene un nombre en la guía de pruebas de OWASP y un instrumento muy simple, la matriz de roles. Aquí lees la de Despensa Andina, una tienda de abarrotes en línea de Medellín, junto con los resultados de una prueba ya autorizada y hecha con cuentas que el cliente creó para el encargo. No lanzas nada: lees la evidencia y decides qué es un hallazgo.
Objetivo de la sala
El control de acceso es la categoría que más aplicaciones suspende, y no se prueba buscando un truco: se prueba comparando lo que el diseño dice que cada rol puede hacer con lo que la aplicación hace de verdad. Esa comparación tiene un nombre en la guía de pruebas de OWASP y un instrumento muy simple, la matriz de roles. Aquí lees la de Despensa Andina, una tienda de abarrotes en línea de Medellín, junto con los resultados de una prueba ya autorizada y hecha con cuentas que el cliente creó para el encargo. No lanzas nada: lees la evidencia y decides qué es un hallazgo.En la edición 2025 del Top 10 de OWASP, el control de acceso roto ocupa el primer lugar (A01:2025 Broken Access Control), y la guía de pruebas de OWASP (WSTG) lo cubre en su sección de autorización, con pruebas como WSTG-ATHZ-02, «Testing for Bypassing Authorization Schema». La idea común: la aplicación debe hacer cumplir, en el servidor y en cada petición, qué puede hacer cada persona según su rol y su propiedad sobre los datos.
Para probarlo hace falta algo previo a cualquier petición: saber qué debería pasar. Sin ese «esperado», un 200 en una página de administración no es un hallazgo ni una normalidad: es un número sin referencia. Por eso el primer paso es pedir al cliente su matriz de roles (qué función puede usar cada rol) y, si no existe, reconstruirla con él antes de probar. La prueba entonces es mecánica: una cuenta por rol, cada función, y se anota esperado y obtenido.
Responde para continuar
Vas a probar el control de acceso de una aplicación. ¿Qué necesitas antes de enviar cualquier petición?
Ver pista de ayuda
Un resultado solo es un fallo frente a algo. Piensa qué te da la referencia y con qué identidades vas a probar.
Un 403 significa «sé quién eres y no puedes». Un 401 significa «no sé quién eres». Un 404 o una redirección al inicio de sesión (302) también pueden negar el acceso, aunque el servidor lo diga con otras palabras. Lo que importa para el hallazgo no es que el código coincida con el esperado, sino si la función se ejecutó o se entregó contenido a quien no debía.
Cuidado con los dos errores opuestos. Reportar todo código distinto del esperado ensucia el informe y le quita credibilidad al resto; descartar un 200 porque «la página parecía vacía» deja pasar un fallo real, porque el contenido que importa puede venir en otra parte de la respuesta. Se anota la diferencia, se mira el contenido y se decide con eso.
En la prueba de Despensa Andina, la fila 8 esperaba 403 de la ruta de pedidos de sucursal con la cuenta de cliente, y el servidor devolvió 404.
Responde para continuar
La prueba 8 esperaba un 403 y el servidor devolvió un 404 a la cuenta de cliente. ¿Cómo la tratas?
Ver pista de ayuda
Pregúntate si la cuenta de cliente recibió algo que no debía recibir. Un código distinto no es lo mismo que acceso concedido.
Abre el laboratorio y consulta la tabla de pruebas. Las filas cuyo obtenido es 200 y cuyo esperado es 403 son los accesos concedidos fuera del diseño. Mira a qué rol pertenece cada una: una función que responde a dos roles distintos que debían quedar fuera suele indicar que no hay control en esa ruta para nadie, y no un descuido con un rol concreto.
Con ese cruce, el hallazgo se redacta sobre la función («exportar la lista de clientes responde a cualquier sesión»), no sobre las cuentas con las que se descubrió.
Responde para continuar
Abre el laboratorio. ¿Qué ruta devolvió 200 tanto a la cuenta de cliente como a la de vendedor, cuando para ambas se esperaba 403? Escríbela tal cual (empieza por «/»).
Ver pista de ayuda
Filtra las pruebas con esperado 403 y obtenido 200 y busca la ruta que aparece con más de un rol.
Un informe necesita cifras que otra persona pueda comprobar. Contar cuántas pruebas dieron acceso donde el diseño decía que no es un dato de partida del hallazgo: dimensiona el problema y permite comprobar, tras la corrección, que la cuenta vuelve a cero.
Cuenta solo las pruebas en que el servidor concedió acceso (200) y el diseño lo negaba (403), sin incluir las diferencias de código que niegan igual.
Responde para continuar
¿Cuántas de las quince pruebas obtuvieron 200 donde se esperaba 403? Escribe solo el número.
Ver pista de ayuda
Hay una consulta ya escrita que devuelve justo esas filas; después solo queda contarlas.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.