# Descubriendo CloudFlare
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Técnicas para intentar descubrir servidores web detrás de Cloudflare: ### Técnicas * Puedes usar un servicio que te proporcione los **registros DNS históricos** del dominio. Quizás la página web esté corriendo en una dirección IP utilizada anteriormente. * Lo mismo se podría lograr **revisando 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 él para obtener la dirección IP del servidor. * Busca una cadena única de la página web en navegadores como shodan (y quizás google y similares). Tal vez 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 * Busca el dominio en [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á usando certificados de Censys que contienen el nombre del dominio, luego buscará IPv4s dentro de esos certificados y finalmente intentará acceder a la página web en esas IPs. * [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 podría estar ubicada 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 máquinas AWS Para una mejor descripción de este proceso, consulta: {% embed url="https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ```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 ``` ## Eludir Cloudflare a través de Cloudflare ### Autenticación de Origen con Certificados Este mecanismo se basa en [**certificados SSL de 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 denomina **mTLS**. En lugar de configurar su propio certificado, el cliente puede simplemente usar el certificado de Cloudflare para permitir cualquier conexión desde Cloudflare, **independientemente del inquilino**. {% hint style="danger" %} Por lo tanto, un atacante podría simplemente configurar un **dominio en Cloudflare usando el certificado de Cloudflare y apuntar** a la dirección **IP** del **dominio víctima**. De esta manera, al configurar su dominio completamente desprotegido, Cloudflare no protegerá las solicitudes enviadas. {% endhint %} Más información [**aquí**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/). ### Lista de Permitidos de Direcciones IP de Cloudflare Esto **rechazará conexiones que no provengan de los rangos de 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 la víctima** y la ataca. Más información [**aquí**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/). ## Eludir Cloudflare para hacer scraping ### Caché A veces solo quieres eludir Cloudflare para hacer scraping de la página web. Hay algunas opciones para esto: * Usar 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/) ### 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 Fortificados La otra opción es hacer todo el trabajo de scraping con un navegador sin cabeza que ha sido fortificado para parecerse al navegador de un usuario real: * **Puppeteer:** El [plugin stealth](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth) para [puppeteer](https://github.com/puppeteer/puppeteer). * **Playwright:** El [plugin stealth](https://www.npmjs.com/package/playwright-stealth) llegará pronto a Playwright. 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 de Selenium Chromedriver. ### Proxy Inteligente con Elusión de Cloudflare Integrada La alternativa al uso de elusiones de Cloudflare de código abierto, es utilizar proxies inteligentes que desarrollan y mantienen sus propias elusiones privadas de Cloudflare. Estos suelen ser más confiables ya que es más difícil para Cloudflare desarrollar parches para ellos, y son desarrollados por compañías de proxy que tienen motivación financiera para mantenerse un paso adelante de Cloudflare y arreglar sus elusiones en el mismo minuto en que dejan de funcionar. La mayoría de los proveedores de proxy inteligente ([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)) tienen alguna forma de elusión de Cloudflare que funciona en diversos grados y varía en costo. Sin embargo, una de las mejores opciones es usar el [ScrapeOps Proxy Aggregator](https://scrapeops.io/proxy-aggregator/) ya que integra más de 20 proveedores de proxy en la misma API de proxy, y encuentra el proveedor de proxy más barato/mejor para tus dominios objetivo. ### Ingeniería Inversa de la Protección Anti-Bot de Cloudflare Este enfoque funciona (y es lo que hacen muchas soluciones de proxy inteligente), sin embargo, no es para los débiles de corazón. **Ventajas:** La ventaja de este enfoque es que si estás haciendo scraping a gran escala y no quieres ejecutar cientos (si no miles) de costosas instancias completas de navegador sin cabeza. En su lugar, puedes desarrollar la elusión de Cloudflare más eficiente en recursos posible. Una que está diseñada únicamente para pasar las pruebas de JS, TLS e IP de Cloudflare. **Desventajas:** Las desventajas de este enfoque es que tendrás que sumergirte profundamente en un sistema anti-bot que ha sido hecho intencionalmente difícil de entender desde el exterior, y probar diferentes técnicas para engañar a su sistema de verificación. Luego mantener este sistema a medida que Cloudflare continúa desarrollando su protección anti-bot. ## Referencias * [https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/)
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).