PortSwigger Business Logic Price Manipulation Workflow Bypass State Machine

Business Logic Vulnerabilities

Fallos en la lógica de negocio: manipulación de precios, flujos de compra, controles de acceso defectuosos y oráculos de cifrado.

Excessive trust in client-side controls

Lab 1Excessive trust in client-side controls

Interceptar la consulta al dar click en Add to cart. Modificar el parámetro price a un valor mínimo (los 2 últimos dígitos son centavos).

productId=1&redir=PRODUCT&quantity=1&price=100

Failing to handle unconventional input

Lab 2High-level logic vulnerability

Agregar la chaqueta y otro producto al carrito. Interceptar el paquete al aumentar cantidad del producto 2 y cambiarla a un número negativo (-10) para reducir el precio total.

Lab 3Low-level logic flaw

La cantidad máxima por consulta es 99. Mandar esa consulta al Intruder con Null payloads infinitos, máximo 1 hilo. El precio total overflow el entero y toma valores negativos. Tantear valores cercanos a 0 y completar con otro producto.

Lab 4Inconsistent handling of exceptional input

Al registrarse, el correo se trunca a 250 caracteres. El dominio admin es @dontwannacry.com. Generar el payload para que después del truncado quede solo con ese dominio.

#!/bin/python3
email=".exploit-LAB-ID.web-security-academy.net"
admin="@dontwannacry.com"
payload='a'*(255-len(admin))+admin
print(payload+email)  # usar esta cadena como email al registrarse

Making flawed assumptions about user behavior

Trusted users won't always remain trustworthy

Lab 5Inconsistent security controls

Registrarse con cualquier cuenta. En My Account cambiar el correo a uno con terminación @dontwannacry.com. Esto otorga acceso al panel de administrador.

Users won't always supply mandatory input

Lab 6Weak isolation on dual-use endpoint

Iniciar sesión con wiener:peter. Interceptar la consulta de cambio de contraseña. Cambiar el usuario a administrator y eliminar el parámetro current-password para saltarse la verificación.

Users won't always follow the intended sequence

Lab 7Insufficient workflow validation

Realizar una compra barata y capturar en HTTP History la consulta /cart/order-confirmation. Enviarla al Repeater. Luego agregar la chaqueta al carrito y usar esa consulta del Repeater para confirmar la orden sin validar el saldo.

Lab 8Authentication bypass via flawed state machine

Iniciar sesión interceptando paquetes. Dejar pasar la consulta de login pero dropear la consulta del role-selector. El rol por defecto será administrador.

Domain-specific flaws

Lab 9Flawed enforcement of business rules

Obtener dos cupones: NEWCUST5 (en la página) y SIGNUP30 (suscribiéndose al newsletter). Aplicarlos de forma intercalada para bajar el precio a 0 (no funciona dos veces el mismo consecutivamente).

Lab 10Infinite money logic flaw

Crear una macro en BurpSuite con las 5 consultas del flujo de compra de gift card con cupón. Configurar un parámetro custom para capturar el código de gift card de la respuesta. Usar Intruder con Null payloads (~412 iteraciones) para acumular dinero y comprar la chaqueta.

POST /cart
POST /cart/coupon
POST /cart/checkout
GET /cart/order-confirmation?order-confirmed=true
POST /gift-card
Lab 11Authentication bypass via encryption oracle

La cookie de notificación actúa como oráculo de cifrado. Usar el endpoint de comentario para cifrar y el de posts para descifrar. La cookie stay-logged-in tiene formato usuario:timestamp encriptado. Eliminar los primeros 23 bytes de prefijo ("Invalid email address: ") más padding necesario (9 bytes extra) para generar la cookie de administrador.