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)
| Plan | Límite de inspección | Ampliable |
|---|---|---|
| Free | ~8 KB | No |
| Pro | Bajo por default | Hasta 1 MB vía soporte |
| Business | Bajo por default | Hasta 1 MB vía soporte |
| Enterprise | 128 KB | Hasta 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-raycon prefijos enterprise → probablemente Enterprise. Si la páginacdn-cgi/traceno expone features avanzadas y loscf-cache-statusson 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:
# 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.
La checklist que repaso en cada objetivo nuevo
47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.
Te das de baja en un clic, desde cualquier correo.
Practica esto en un lab
Cloudflare Waf Bypass
Sigue aprendiendo · cuenta gratis
Guarda tu progreso, desbloquea payloads avanzados y rankea tus flags.
Artículos relacionados
Cloudflare WAF Bypass — oversized body, header stuffing y cache poisoning
El WAF de Cloudflare tiene límites de inspección por plan (~8KB Free, 128KB Enterprise). Padding bypass, header stuffing >100 headers, IP origin disclosure.
CSRF explotación avanzada — SameSite bypass, JSON CSRF, Flash, file upload CSRF
Técnicas avanzadas de CSRF más allá del clásico form submit: SameSite=Lax bypass via GET, JSON CSRF con Content-Type tricks, file upload CSRF y exploitation chains.
XSS WAF bypass — encoding, parser differentials, case-only mutations
Técnicas de bypass WAF para XSS: HTML entities, hex/decimal/unicode encoding, parser differentials (browser vs WAF), comments injection, case variations, JS template literals.
