# Descubriendo CloudFlare {{#include ../../banners/hacktricks-training.md}} ## Técnicas Comunes para Descubrir Cloudflare - Puedes usar algún servicio que te dé los **registros DNS históricos** del dominio. Tal vez la página web esté funcionando en una dirección IP utilizada anteriormente. - Lo mismo podría lograrse **verificando certificados SSL históricos** que podrían estar apuntando a la dirección IP de origen. - Revisa también **registros DNS de otros subdominios que apunten directamente a IPs**, ya que es posible que otros subdominios estén apuntando al mismo servidor (quizás para ofrecer FTP, correo u otro servicio). - Si encuentras un **SSRF dentro de la aplicación web**, puedes abusar de ello para obtener la dirección IP del servidor. - Busca una cadena única de la página web en navegadores como shodan (y tal vez google y similares?). Quizás puedas encontrar una dirección IP con ese contenido. - De manera similar, en lugar de buscar una cadena única, podrías buscar el icono favicon con la herramienta: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) o con [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up) - Esto no funcionará muy frecuentemente porque el servidor debe enviar la misma respuesta cuando se accede por la dirección IP, pero nunca se sabe. ## Herramientas para descubrir Cloudflare - Busca el dominio dentro de [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) o [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com). O usa la herramienta [CloudPeler](https://github.com/zidansec/CloudPeler) (que utiliza esa API) - Busca el dominio en [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/) - [**CloudFlair**](https://github.com/christophetd/CloudFlair) es una herramienta que buscará utilizando certificados de Censys que contengan el nombre de dominio, luego buscará IPv4s dentro de esos certificados y finalmente intentará acceder a la página web en esas IPs. - [**CloakQuest3r**](https://github.com/spyboy-productions/CloakQuest3r): CloakQuest3r es una poderosa herramienta de Python meticulosamente diseñada para descubrir la verdadera dirección IP de sitios web protegidos por Cloudflare y otras alternativas, un servicio de seguridad web y mejora del rendimiento ampliamente adoptado. Su misión principal es discernir con precisión la dirección IP real de los servidores web que están ocultos detrás del escudo protector de Cloudflare. - [Censys](https://search.censys.io/) - [Shodan](https://shodan.io/) - [Bypass-firewalls-by-DNS-history](https://github.com/vincentcox/bypass-firewalls-by-DNS-history) - Si tienes un conjunto de IPs potenciales donde se encuentra la página web, podrías usar [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder) ```bash # You can check if the tool is working with prips 1.0.0.0/30 | hakoriginfinder -h one.one.one.one # If you know the company is using AWS you could use the previous tool to search the ## web page inside the EC2 IPs DOMAIN=something.com WIDE_REGION=us for ir in `curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | select(.region|test("^us")) | .ip_prefix'`; do echo "Checking $ir" prips $ir | hakoriginfinder -h "$DOMAIN" done ``` ## Descubriendo Cloudflare desde la infraestructura en la nube Ten en cuenta que, aunque esto se hizo para máquinas de AWS, podría hacerse para cualquier otro proveedor de nube. Para una mejor descripción de este proceso, consulta: {{#ref}} https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks {{#endref}} ```bash # Find open ports sudo masscan --max-rate 10000 -p80,443 $(curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | .ip_prefix' | tr '\n' ' ') | grep "open" > all_open.txt # Format results cat all_open.txt | sed 's,.*port \(.*\)/tcp on \(.*\),\2:\1,' | tr -d " " > all_open_formated.txt # Search actual web pages httpx -silent -threads 200 -l all_open_formated.txt -random-agent -follow-redirects -json -no-color -o webs.json # Format web results and remove eternal redirects cat webs.json | jq -r "select((.failed==false) and (.chain_status_codes | length) < 9) | .url" | sort -u > aws_webs.json # Search via Host header httpx -json -no-color -list aws_webs.json -header Host: cloudflare.malwareworld.com -threads 250 -random-agent -follow-redirects -o web_checks.json ``` ## Bypass de Cloudflare a través de Cloudflare ### Extracciones de Origen Autenticadas Este mecanismo se basa en **certificados SSL** [**del cliente**](https://socradar.io/how-to-monitor-your-ssl-certificates-expiration-easily-and-why/) **para autenticar conexiones** entre los servidores de **proxy inverso de Cloudflare** y el servidor **de origen**, lo que se llama **mTLS**. En lugar de configurar su propio certificado, los clientes pueden simplemente usar el certificado de Cloudflare para permitir cualquier conexión desde Cloudflare, **independientemente del inquilino**. > [!CAUTION] > Por lo tanto, un atacante podría simplemente establecer un **dominio en Cloudflare usando el certificado de Cloudflare y apuntar** a la dirección **IP** del dominio **de la víctima**. De esta manera, al configurar su dominio completamente desprotegido, Cloudflare no protegerá las solicitudes enviadas. Más información [**aquí**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/). ### Direcciones IP de Cloudflare en la Lista Blanca Esto **rechazará conexiones que no se originen en las** direcciones IP de Cloudflare. Esto también es vulnerable a la configuración anterior donde un atacante simplemente **apunta su propio dominio en Cloudflare** a la dirección **IP** de las **víctimas**. Más información [**aquí**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/). ## Bypass de Cloudflare para scraping ### Caché A veces solo quieres eludir Cloudflare para raspar la página web. Hay algunas opciones para esto: - Usar la caché de Google: `https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog` - Usar otros servicios de caché como [https://archive.org/web/](https://archive.org/web/) ### Herramientas Algunas herramientas como las siguientes pueden eludir (o pudieron eludir) la protección de Cloudflare contra el scraping: - [https://github.com/sarperavci/CloudflareBypassForScraping](https://github.com/sarperavci/CloudflareBypassForScraping) ### Solucionadores de Cloudflare Se han desarrollado varios solucionadores de Cloudflare: - [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) - [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [Guía aquí](https://scrapeops.io/python-web-scraping-playbook/python-cloudscraper/) - [cloudflare-scrape](https://github.com/Anorov/cloudflare-scrape) - [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe) - [Cloudflare-IUAM-Solver](https://github.com/ninja-beans/cloudflare-iuam-solver) - [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[Archivado] - [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe) ### Navegadores Sin Cabeza Fortalecidos Usa un navegador sin cabeza que no sea detectado como un navegador automatizado (puedes necesitar personalizarlo para eso). Algunas opciones son: - **Puppeteer:** El [plugin de sigilo](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth) para [puppeteer](https://github.com/puppeteer/puppeteer). - **Playwright:** El [plugin de sigilo](https://www.npmjs.com/package/playwright-stealth) llegará a Playwright pronto. Sigue los desarrollos [aquí](https://github.com/berstend/puppeteer-extra/issues/454) y [aquí](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra). - **Selenium:** El [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver) es un parche optimizado para Selenium Chromedriver. ### Proxy Inteligente Con Bypass Integrado de Cloudflare Los **proxies inteligentes** son actualizados continuamente por empresas especializadas, con el objetivo de eludir las medidas de seguridad de Cloudflare (ya que ese es su negocio). Algunos de ellos son: - [ScraperAPI](https://www.scraperapi.com/?fp_ref=scrapeops) - [Scrapingbee](https://www.scrapingbee.com/?fpr=scrapeops) - [Oxylabs](https://oxylabs.go2cloud.org/aff_c?offer_id=7&aff_id=379&url_id=32) - [Smartproxy](https://prf.hn/click/camref:1100loxdG/[p_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb) son conocidos por sus mecanismos de bypass de Cloudflare patentados. Para aquellos que buscan una solución optimizada, el [Agregador de Proxies de ScrapeOps](https://scrapeops.io/proxy-aggregator/) se destaca. Este servicio integra más de 20 proveedores de proxies en una sola API, seleccionando automáticamente el proxy más adecuado y rentable para tus dominios objetivo, ofreciendo así una opción superior para navegar por las defensas de Cloudflare. ### Ingeniería Inversa de la Protección Anti-Bot de Cloudflare La ingeniería inversa de las medidas anti-bot de Cloudflare es una táctica utilizada por proveedores de proxies inteligentes, adecuada para un scraping web extenso sin el alto costo de ejecutar muchos navegadores sin cabeza. **Ventajas:** Este método permite la creación de un bypass extremadamente eficiente que apunta específicamente a las verificaciones de Cloudflare, ideal para operaciones a gran escala. **Desventajas:** La desventaja es la complejidad involucrada en entender y engañar al sistema anti-bot deliberadamente oscuro de Cloudflare, lo que requiere un esfuerzo continuo para probar diferentes estrategias y actualizar el bypass a medida que Cloudflare mejora sus protecciones. Encuentra más información sobre cómo hacer esto en el [artículo original](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/). ## Referencias - [https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/) {{#include ../../banners/hacktricks-training.md}}