Nuevos labs cada semana — Accede a todos desde 5€/mes

Pasarelas de Pago

Vulnerabilidades en flujos de compra, suscripción y transacciones

Respuesta rápida

¿Qué es Pasarelas de Pago?

Las pasarelas de pago son targets de alto impacto. Los bugs aquí involucran manipulación de precios, race conditions en transacciones, CSRF en cancelaciones y bypass de verificaciones de pago.

Severidad

Crítico

Frecuencia

Común

Payloads

8

Pasos

6

Severidad

Crítico

Frecuencia

Común

Payloads

8

Los flujos de pago son complejos: carrito → checkout → procesamiento → confirmación. Cada paso puede tener validaciones client-side que no se verifican en el servidor. Las race conditions son especialmente comunes en transferencias y aplicación de cupones.

Compras a precio 0Double-spendingAplicar cupones múltiples vecesCancelar suscripción de otros (CSRF)Bypass de paywalls

Dónde buscar

Carrito y checkout

Parámetros de precio, cantidad, moneda en el request de compra. ¿Se validan server-side?

Códigos de descuento

Aplicar cupones es un target clásico de race condition: enviar múltiples requests simultáneos.

Transferencias de dinero

Enviar dos transferencias simultáneas con el mismo saldo → posible double-spending.

Suscripciones

Cancelación sin CSRF token, downgrade/upgrade sin revalidar pago, trial abuse.

Generación de facturas

Si las facturas se generan como PDF desde HTML, puede haber SSRF (ver contexto HTML to PDF).

Metodología

1

Analizar el flujo completo

Mapea: selección → carrito → checkout → pago → confirmación. Intercepta cada request.

2

Manipular precio/cantidad

Cambia price=1000 a price=1, quantity=1 a quantity=-1, currency=USD a currency=ARS.

3

Probar race conditions

Cupones: envía 50 requests aplicando el mismo cupón simultáneamente. Transferencias: dos a la vez con el mismo saldo.

4

CSRF en operaciones

¿La cancelación de suscripción tiene token CSRF? ¿El cambio de plan? ¿La eliminación de método de pago?

5

Añadir items post-checkout

Inicia el pago con 1 item. Mientras se procesa, añade más items al carrito. ¿Se cobran al precio original?

6

Verificar webhooks

¿La app verifica la firma del webhook de Stripe/PayPal? Si no, puedes falsificar confirmaciones de pago.

Caso real

Race condition en cupón de descuento → compras gratis

$1,500
1

Identificar endpoint de cupón

POST /api/cart/apply-coupon con body {code: 'SAVE50'}. Aplica 50% de descuento.

2

Enviar requests simultáneos

Turbo Intruder con 50 requests idénticos en paralelo. El cupón se aplica 3 veces antes de marcarse como usado.

3

Resultado

50% + 50% + 50% = -50% del precio. El sistema permite precio negativo → compra gratis + crédito.

Lección: Las operaciones de cupón deben ser atómicas. Sin transacciones de BD o locks, las race conditions son inevitables. Siempre prueba cupones con requests concurrentes.

Payloads

Precio negativo

POST /api/checkout  {"price": -100, "quantity": 1}

Cantidad negativa

POST /api/cart/add  {"productId": "123", "quantity": -5}

Cambio de moneda

POST /api/checkout  {"currency": "CLP"}  (1 USD = 900 CLP)

Race en cupón

seq 50 | xargs -P 50 curl -X POST .../apply-coupon -d 'code=SAVE50'

Payloads avanzados(requiere cuenta)

Double-spending race

Enviar 2 transferencias simultáneas: {to: B, amount: 100} + {to: C, amount: 100} (saldo=100)

CSRF cancelación

<img src="https://target.com/api/subscription/cancel">

Webhook forgery

POST /webhooks/stripe  {"type":"checkout.session.completed","data":{"object":{"paid":true}}}

Items post-checkout

Iniciar pago → mientras carga → POST /api/cart/add → items extra no cobrados

Contenido exclusivo

Crea tu cuenta gratis para acceder a payloads avanzados, scripts y técnicas de bypass

Crear cuenta gratis

Herramientas

Turbo Intruder

Envía 50+ requests simultáneos para explotar race conditions en pagos.

Burp → Turbo Intruder → race.py template → gate='race'

Burp Repeater Group Send

Alternativa rápida a Turbo Intruder para race conditions simples.

Seleccionar múltiples tabs → Click derecho → Send group (parallel)

Tips

Los cupones son el target #1

Envía el mismo cupón 50 veces en paralelo. Si se aplica más de una vez, es race condition.

Prueba precios negativos

Cambia el precio a negativo en el request. Muchos backends no validan que sea positivo.

Webhook sin firma = falsificable

Si la app no verifica la firma del webhook de Stripe, puedes falsificar confirmaciones de pago.

Monitorea el carrito durante el pago

Si puedes añadir items mientras el pago se procesa, la app puede cobrar menos de lo entregado.

Practica Pasarelas de Pago con labs reales

Aplica estas técnicas en entornos seguros basados en reportes reales de bug bounty.