hacktricks/network-services-pentesting/pentesting-web/uncovering-cloudflare.md

156 lines
12 KiB
Markdown
Raw Normal View History

2023-06-05 18:33:24 +00:00
# Descubriendo CloudFlare
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2023-06-05 18:33:24 +00:00
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).
2023-06-05 18:33:24 +00:00
</details>
Técnicas para intentar descubrir servidores web detrás de Cloudflare:
2023-06-05 18:33:24 +00:00
### 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).
2023-06-05 18:33:24 +00:00
* 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.
2023-06-05 18:33:24 +00:00
* 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.
2023-06-05 18:33:24 +00:00
### 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)
2023-06-05 18:33:24 +00:00
* 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.
2023-06-05 18:33:24 +00:00
* [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)
2023-06-05 18:33:24 +00:00
```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"
2023-06-05 18:33:24 +00:00
done
```
### Descubriendo Cloudflare desde máquinas AWS
2023-06-05 18:33:24 +00:00
Para una mejor descripción de este proceso, consulta:
2023-06-05 18:33:24 +00:00
{% 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
2023-06-05 18:33:24 +00:00
### Autenticación de Origen con Certificados
2023-06-05 18:33:24 +00:00
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**.
2023-06-05 18:33:24 +00:00
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**.
2023-06-05 18:33:24 +00:00
{% 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 %}
2023-06-05 18:33:24 +00:00
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:
2023-06-05 18:33:24 +00:00
* [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
* [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [Guía aquí](https://scrapeops.io/python-web-scraping-playbook/python-cloudscraper/)
2023-06-05 18:33:24 +00:00
* [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]
2023-06-05 18:33:24 +00:00
* [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe)
### Navegadores sin Cabeza Fortificados <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
2023-06-05 18:33:24 +00:00
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:
2023-06-05 18:33:24 +00:00
* **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.
2023-06-05 18:33:24 +00:00
### Proxy Inteligente con Elusión de Cloudflare Integrada <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
### Ingeniería Inversa de la Protección Anti-Bot de Cloudflare <a href="#option-6-reverse-engineer-cloudflare-anti-bot-protection" id="option-6-reverse-engineer-cloudflare-anti-bot-protection"></a>
2023-06-05 18:33:24 +00:00
Este enfoque funciona (y es lo que hacen muchas soluciones de proxy inteligente), sin embargo, no es para los débiles de corazón.
2023-06-05 18:33:24 +00:00
**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.
2023-06-05 18:33:24 +00:00
**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.
2023-06-05 18:33:24 +00:00
## Referencias
2023-06-05 18:33:24 +00:00
* [https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
2023-06-05 18:33:24 +00:00
* 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).
2023-06-05 18:33:24 +00:00
</details>