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.
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.