Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Pasos que se saltan o se repiten

5 tareas · 40 min · Principiante

Un flujo de varios pasos solo es seguro si el servidor sabe en qué paso está cada objeto y no acepta el siguiente sin que el anterior haya ocurrido de verdad. Bodega de Despensa Mecato despachó pedidos que finanzas no encuentra cobrados, y un bono de bienvenida apareció varias veces en la misma cuenta. Te entregan el controlador del pago, el servicio de cupones, el registro de los pasos, las respuestas de la pasarela y los bonos aplicados.

0 de 5 · 0%

Objetivo de la sala

Un flujo de varios pasos solo es seguro si el servidor sabe en qué paso está cada objeto y no acepta el siguiente sin que el anterior haya ocurrido de verdad. Bodega de Despensa Mecato despachó pedidos que finanzas no encuentra cobrados, y un bono de bienvenida apareció varias veces en la misma cuenta. Te entregan el controlador del pago, el servicio de cupones, el registro de los pasos, las respuestas de la pasarela y los bonos aplicados.

Un flujo de compra se ve como una secuencia de pantallas: dirección, franja, pago, confirmación. Pero cada pantalla es una petición independiente que el cliente puede enviar cuando quiera, en el orden que quiera y tantas veces como quiera. Si el servidor deduce el paso actual de algo que controla el cliente (un campo oculto, un parámetro, una marca que se pone al abrir una pantalla), el orden de las pantallas deja de ser una regla y pasa a ser una sugerencia.

MITRE lo cataloga como CWE-841, la aplicación que no hace cumplir el flujo de comportamiento esperado, y la guía de pruebas web de OWASP le dedica una prueba propia dentro de las de lógica de negocio: intentar llegar al final de un proceso sin pasar por los pasos intermedios. La defensa es una máquina de estados en el servidor: cada objeto guarda su estado, y cada transición comprueba que parte del estado correcto y que su condición se cumplió de verdad.

Responde para continuar

¿Qué debe consultar el servidor para aceptar la confirmación de un pedido?

Ver pista de ayuda

Busca la opción que depende de un hecho, no de una navegación.

Abre el laboratorio y lee CheckoutController.php en la carpeta mecato-pasos. Fíjate en qué comprueba confirmar y en qué momento se pone ese valor. Después cruza registro-checkout.txt con pagos-pasarela.txt: cada pedido confirmado con tarjeta debería tener su respuesta de la pasarela entre el paso de pago y la confirmación.

Responde para continuar

¿Qué pedido se confirmó sin que la pasarela registrara ningún intento de cobro? Escribe su código.

Ver pista de ayuda

Busca un pedido confirmado seis segundos después de abrir la pantalla de pago.

La marca de sesión no distingue entre un pago aprobado, uno rechazado y ninguno. Por eso el alcance no son solo los pedidos sin respuesta de la pasarela: también cuenta cualquiera que se confirmó con la pasarela diciendo que no. El que fue rechazado con un 409 no cuenta, porque nunca se confirmó.

Responde para continuar

¿Cuántos pedidos del registro quedaron confirmados sin un pago aprobado por la pasarela?

Ver pista de ayuda

Revisa todas las confirmaciones con estado 200 contra la columna resultado de la pasarela.

El otro lado del mismo problema es un paso que debía ocurrir una sola vez y ocurre varias. MITRE tiene una entrada para eso, CWE-837: no hacer cumplir que una acción sea única. En Mecato el bono de bienvenida se aplica si la cuenta no tiene marcada la bienvenida, pero esa marca se pone en otro momento del flujo. Lee CuponService.php y EventServiceProvider.php y cruza con registro-cupones.txt. Por regla, cada cuenta recibe el bono una sola vez.

Responde para continuar

¿Cuántos pesos de bono de bienvenida se aplicaron por encima de lo que permite la regla en el registro?

Ver pista de ayuda

Compara cuándo se aplica el bono con cuándo se marca como usado.

Los dos hallazgos comparten la raíz: el servidor decide con una señal que no coincide con el hecho que la regla protege. La confirmación mira una marca de navegación en vez del pago; el bono mira una marca que se pone días después de usarlo.

Responde para continuar

¿Qué cambio corrige la causa de los dos hallazgos de Mecato?

Ver pista de ayuda

Cada decisión tiene que leer el hecho que la regla nombra, en el momento en que ocurre.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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