Omitir Cloudflare WAF con la dirección IP del servidor de origen
Last updated
Last updated
Esta es una publicación de blog invitada del hacker de Detectify Crowdsource , Gwendal Le Coguic. Este es un tutorial sobre cómo omitir Cloudflare WAF con la dirección IP del servidor de origen.
Detectify colabora con piratas informáticos éticos confiables para realizar investigaciones de vulnerabilidades de colaboración colectiva que impulsan nuestro escáner de seguridad de aplicaciones web de vanguardia. La comunidad de piratas informáticos de Crowdsource nos ayuda a mantener nuestros oídos atentos a la comunidad de seguridad para brindarnos detalles sobre vulnerabilidades activas en la naturaleza.
Cloudflare es un proveedor de firewall de aplicaciones web (WAF) ampliamente utilizado. Pero, ¿y si pudieras eludir todas estas protecciones en un segundo haciendo que la defensa sea inútil? Este artículo es un tutorial sobre cómo omitir Cloudflare WAF con la dirección IP del servidor de origen.
Tenga en cuenta que lo que sigue probablemente sea relevante para cualquier tipo de firewall de aplicaciones web.
Con más de 16 millones de propiedades de Internet , Cloudflare es ahora uno de los firewalls de aplicaciones web (WAF) más populares. Hace un año, Cloudflare lanzó un solucionador de DNS rápido, que se convirtió en la guinda proverbial de su oferta de servicios. Al funcionar como un proxy inverso, el WAF no solo ofrece protección contra DDOS, sino que también puede activar una alerta cuando detecta un ataque. Para las suscripciones pagas, los usuarios tienen la opción de activar la protección contra vulnerabilidades comunes como SQLi, XSS y CSRF, pero esto debe habilitarse manualmente. Esta opción no está disponible para cuentas gratuitas.
Si bien el WAF es bastante bueno para bloquear las cargas útiles básicas, ya existen muchas omisiones alrededor del WAF de Cloudflare y aparecen nuevas todos los días, por lo que es importante seguir probando la seguridad de Cloudflare. En el momento exacto estoy escribiendo este artículo:
Como cazarrecompensas de errores de hackers , es obvio que podría ser muy interesante deshacerse del firewall. Para eso, básicamente tienes 3 opciones:
Personalice sus cargas útiles para eludir las reglas vigentes. Puede ser interesante mejorar sus habilidades sobre la omisión del firewall, pero puede ser una tarea tediosa y que requiere mucho tiempo, lo cual no es algo que pueda permitirse cuando es un cazador de errores: ¡el tiempo es primordial! Si está de acuerdo con esta opción, es mejor que pruebe las locas cargas útiles enumeradas en PayloadsAllThe Things o busque en Twitter.
Modifique las solicitudes de manera adecuada para interrumpir el servidor. Y al igual que la primera opción, puede llevar mucho tiempo, requiere paciencia y buenas habilidades de fuzzing. Soroush Dalili escribió una buena presentación que podría ayudar a crear tales solicitudes mediante el uso del estándar HTTP y el comportamiento de los servidores web .
Desplácese por Cloudflare encontrando la IP de origen del servidor web. Probablemente la opción más fácil, no se requieren habilidades técnicas, también es parte del proceso de reconocimiento, por lo que no se pierde tiempo. Tan pronto como lo obtenga, no tendrá que preocuparse más por el WAF o la protección DDOS (límite de velocidad).
En este artículo, me voy a centrar en la última opción y cómo lograrlo en base a los consejos tomados aquí y allá.
Recordatorio: Cloudflare es una herramienta que deben configurar humanos, generalmente desarrolladores o administradores de sistemas. Cloudflare no es responsable de la configuración incorrecta que podría conducir a ataques exitosos realizados con los métodos que se describen a continuación.
Pon a prueba la seguridad de tu sitio web con DetectifyRegístrese para una prueba gratuita
La idea es comenzar su proceso de reconocimiento normal y obtener tantas direcciones IP como pueda (host, nslookup, whois, rangos ...), luego verifique cuáles de esos servidores tienen un servidor web habilitado (netcat, nmap, masscan). Una vez que tenga una lista de IP del servidor web, el siguiente paso es verificar si el dominio protegido está configurado en uno de ellos como un host virtual . De lo contrario, obtendrá la página del servidor predeterminado o el sitio web predeterminado configurado. Si es así, ¡entonces encontraste el punto de entrada! Usando eructo:
Algunas herramientas disponibles para automatizar este proceso: https://pentest-tools.com/information-gathering/find-virtual-hosts https://github.com/jobertabma/virtual-host-discovery https://github.com/ gwen001/vhost-bruto
Si su objetivo tiene un certificado SSL (¡y debería tenerlo!), entonces está registrado en la base de datos de Censys (recomiendo encarecidamente suscribirse). Elija "Certificados" en la entrada de selección, proporcione el dominio de su objetivo, luego presione <enter>
.
Debería ver una lista de certificados que se ajustan a su objetivo:
Haga clic en cada resultado para mostrar los detalles y, en el menú "Explorar" a la derecha, elija "Hosts IPv4":
Desde aquí, tome todas las IP que pueda y, de vuelta al capítulo anterior, intente acceder a su objetivo a través de todas ellas.
El siguiente paso es recuperar los encabezados de los correos emitidos por su objetivo: suscríbase al boletín, cree una cuenta, use la función "contraseña olvidada", solicite algo ... en pocas palabras, haga lo que pueda para recibir un correo electrónico del sitio web que Estás probando (ten en cuenta que se puede usar Burp Collaborator).
Una vez que reciba un correo electrónico, verifique la fuente y, especialmente, los encabezados. Registra todas las IPs que encuentres allí, así como los subdominios, que posiblemente pertenezcan a un servicio de hosting. Y nuevamente, intente acceder a su objetivo a través de todos ellos.
El valor del encabezado Return-Path
funcionó bastante bien para mí:
Prueba usando Curl:
Otro truco es enviar un correo desde su propio buzón a una dirección de correo electrónico inexistente @yourtarget.com. Si la entrega falla, debería recibir una notificación. Gracias a @_3P1C .
Esta conocida herramienta de WordPress, XML-RPC (Remote Procedure Call), permite a un administrador administrar su blog de forma remota mediante solicitudes XML. Un pingback es la respuesta de un ping. Se realiza un ping cuando un sitio A se vincula a un sitio B, luego el sitio B notifica al sitio A que está al tanto de la mención. Este es el ping-back.
Puede verificar fácilmente si está habilitado llamando al https://www.target.com/xmlrpc.php
. Deberías obtener lo siguiente:XML-RPC server accepts POST requests only.
De acuerdo con WordPress XML-RPC Pingback API , las funciones toman 2 parámetros sourceUri
y targetUri
. Así es como se ve en Burp Suite:
Crédito a @Rivitheadz .
Si no puede encontrar la IP de origen utilizando los métodos anteriores o si el sitio web no estaba protegido cuando comenzó su búsqueda pero finalmente se protegió, recuerde que a veces su mejor amigo es su objetivo y puede brindarle la información. Estás buscando.
Básicamente lo que necesitas es que el servidor web de tu objetivo realice una solicitud a tu servidor/colaborador. Usar otro tipo de problema también podría ser una buena idea: SSRF, XXE, XSS o lo que ya haya encontrado, para inyectar una carga útil que contenga la dirección de su servidor/colaborador y verificar los registros. Si obtuvo algún resultado, vuelva a verificar el host virtual.
Incluso las vulnerabilidades más simples, como Open Redirect o la inyección de HTML/CSS, pueden ser útiles si el servidor web de la aplicación las interpreta.
Por ahora hemos visto cómo encontrar y verificar direcciones IP manualmente, afortunadamente tenemos grandes desarrolladores en nuestra comunidad. A continuación se presentan algunas herramientas que se supone que deben hacer el trabajo por usted y que podrían ahorrarle su valioso tiempo. Puede incluirlos en su proceso de reconocimiento tan pronto como detecte una protección de Cloudflare.
Tenga en cuenta que ninguno de estos métodos es 100% confiable ya que todos los objetivos son diferentes y lo que funcionará para uno, puede no funcionar para otro. Mi consejo: pruébalos todos.
HatCloud : crimeflare, ipinfo.io CrimeFlare : crimeflare, ipinfo.io bypass-firewalls-by-DNS-history : securitytrails, crimeflare
CloudFail : dnsdumpster, crimeflare, fuerza bruta de subdominio CloudFlair : clave censys requerida CloudIP : nslookup algunos subdominios ( ftp, cpanel, correo, directo, conexión directa, correo web, portal )
Como probablemente entendió, lo más importante es obtener tantas direcciones IP como pueda, sin importar cómo, sin importar dónde. Los servidores DNS son, por supuesto, el principal foco de atención, especialmente su historial, que estará disponible para siempre en la memoria de Internet. A continuación hay algunas fuentes excelentes que puede usar para encontrar su Grial.
Netcraft: https://toolbar.netcraft.com/site_report?url= dns-trails: https://securitytrails.com/dns-trails DNSQueries: https://www.dnsqueries.com/en/domain_check.php DNSdumpster: https://dnsdumpster.com/ Shodan: https://www.shodan.io/search?query=
Informes de casos anteriores sobre Hackerone:
https://hackerone.com/reports/255978 https://hackerone.com/reports/360825 https://hackerone.com/reports/315838
Como solemos decir en la industria de la seguridad: una cadena es tan fuerte como su eslabón más débil. No importa cuánto tiempo haya dedicado a configurar Cloudflare, si se puede omitir y si se puede acceder directamente a su aplicación web a través de la IP del servidor, también se omitirán todas las protecciones que ofrece Cloudflare. Se vuelven totalmente inútiles ya que ya no estás protegido.
Probablemente hay muchas otras formas de realizar esta tarea de derivación, y ahora que entiendes la idea, no dudes en enviarme tus consejos en los comentarios o a través de Twitter. Estaré más que feliz de agregarlos a mi blog.
Personalmente, nunca informé de tales cosas, pero según Soroush Dalili , poder sortear Cloudflare es algo que se considera una configuración incorrecta de la seguridad, por lo que merece una alerta. ¡Recompensa plzzzzzzzzzzzzzzzzzzzzzz!
Otras lecturas: