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.