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

Nivel AvanzadoPremium

Cloudflare WAF — payload size bypass, oversized body, plan-specific limits

Bypass de Cloudflare WAF mediante exploitation de body size limits por plan (Free 100kb, Pro 100kb, Business 500kb, Enterprise 1mb): oversize payload trick + chunked transfer encoding.

Gorka El Bochi11 de mayo de 202613 min

Respuesta rápida

Cloudflare WAF no inspecciona todo el body: tiene límites por plan (Free ~8 KB, Pro/Business bajos por default, Enterprise 128 KB). Si tu payload va después del límite, el WAF no lo ve. Bypass clásico: padding + payload real al final del body. Funciona en POST/PUT/PATCH, JSON, multipart y form-urlencoded. Combina con chunked transfer encoding para evadir reglas que sí inspeccionan los primeros bytes. Severidad real solo cuando encadenas con SQLi/XSS/RCE detrás.


1. El concepto: body inspection limits

Cloudflare inspecciona los primeros N bytes del body. Por encima de N, el contenido pasa sin análisis al origin. Es comportamiento by design documentado por Cloudflare — pero en bug bounty lo que importa es el impacto sobre la app del target.

Límites por plan (estado post-diciembre 2025)

PlanLímite de inspecciónAmpliable
Free~8 KBNo
ProBajo por defaultHasta 1 MB vía soporte
BusinessBajo por defaultHasta 1 MB vía soporte
Enterprise128 KBHasta 1 MB vía soporte

Cloudflare intentó subir el límite a 1 MB para todos en diciembre 2025 (CVE-2025-55182, React RCE), pero revirtió por falsos positivos masivos en managed rulesets. Resultado: los límites bajos siguen vigentes en la inmensa mayoría de Free/Pro deployments.

[!tip] Detección del plan Si ves Bot Management avanzado, WAF custom rules complejas y cf-ray con prefijos enterprise → probablemente Enterprise. Si la página cdn-cgi/trace no expone features avanzadas y los cf-cache-status son básicos → Free/Pro.


2. Fingerprint del WAF activo

Antes de tirar oversize, confirma que el WAF está inspeccionando el body. Manda un payload básico que siempre dispare reglas managed:

bash
# SQLi clásico — debería disparar Managed Ruleset
curl -X POST https://target.com/api/search \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "q=' UNION SELECT password FROM users-- "

# Respuesta esperada con WAF activo:
# HTTP/1.1 403 Forbidden
# server: cloudflare
# cf-ray: <id>-<colo>
# (body con "Attention Required! | Cloudflare")

Si recibes 403 → WAF activo inspeccionando. Si pasa con 200/500 → o no hay WAF, o no inspecciona ese endpoint, o ya está bypasseado por defecto.


Sigue leyendo el chain completo

La parte que falta incluye el PoC paso a paso, código de explotación y la cadena completa que llevó al impacto. Disponible para suscriptores.

Practica esto en un lab

Cloudflare Waf Bypass

Resolver

Sigue aprendiendo · cuenta gratis

Guarda tu progreso, desbloquea payloads avanzados y rankea tus flags.

Crear cuenta

Artículos relacionados