
🔎 Trouvez les serveurs d'origine des sites web derrière CloudFlare en utilisant les données de scan à l'échelle d'Internet de Censys.
Note importante : à partir de fin 2024, Censys ne fournit plus d'accès API aux comptes gratuits. Cela signifie que CloudFlair ne fonctionne plus avec les comptes Censys gratuits.
CloudFlair est un outil pour trouver les serveurs d'origine des sites web protégés par CloudFlare (ou CloudFront) qui sont exposés publiquement et qui ne restreignent pas correctement l'accès réseau aux plages d'adresses IP du CDN concerné.
L'outil utilise les données de scan à l'échelle d'Internet de Censys pour trouver des hôtes IPv4 exposés présentant un certificat SSL associé au nom de domaine cible. Des clés API sont requises et peuvent être récupérées depuis votre compte Censys.
Pour plus de détails sur cette configuration erronée courante et sur le fonctionnement de CloudFlair, consultez l'article de blog compagnon à l'adresse https://blog.christophetd.fr/bypassing-cloudflare-using-internet-wide-scan-data/.
Voici CloudFlair en action.
$ python cloudflair.py myvulnerable.site
[*] The target appears to be behind CloudFlare.
[*] Looking for certificates matching "myvulnerable.site" using Censys
[*] 75 certificates matching "myvulnerable.site" found.
[*] Looking for IPv4 hosts presenting these certificates...
[*] 10 IPv4 hosts presenting a certificate issued to "myvulnerable.site" were found.
- 51.194.77.1
- 223.172.21.75
- 18.136.111.24
- 127.200.220.231
- 177.67.208.72
- 137.67.239.174
- 182.102.141.194
- 8.154.231.164
- 37.184.84.44
- 78.25.205.83
[*] Retrieving target homepage at https://myvulnerable.site
[*] Testing candidate origin servers
- 51.194.77.1
- 223.172.21.75
- 18.136.111.24
responded with an unexpected HTTP status code 404
- 127.200.220.231
timed out after 3 seconds
- 177.67.208.72
- 137.67.239.174
- 182.102.141.194
- 8.154.231.164
- 37.184.84.44
- 78.25.205.83
[*] Found 2 likely origin servers of myvulnerable.site!
- 177.67.208.72 (HTML content identical to myvulnerable.site)
- 182.102.141.194 (HTML content identical to myvulnerable.site)
(Les adresses IP de cet exemple ont été obscurcies et remplacées par des IP générées aléatoirement)
$ export CENSYS_API_ID=...
$ export CENSYS_API_SECRET=...
$ git clone https://github.com/christophetd/CloudFlair.git
cd CloudFlair
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python cloudflair.py myvulnerable.site
ou pour CloudFront
python cloudflair.py myvulnerable.site --cloudfront
$ python cloudflair.py --help
usage: cloudflair.py [-h] [-o OUTPUT_FILE] [--censys-api-id CENSYS_API_ID] [--censys-api-secret CENSYS_API_SECRET] [--cloudfront] domain
positional arguments:
domain The domain to scan
options:
-h, --help show this help message and exit
-o OUTPUT_FILE, --output OUTPUT_FILE
A file to output likely origin servers to (default: None)
--censys-api-id CENSYS_API_ID
Censys API ID. Can also be defined using the CENSYS_API_ID environment variable (default: None)
--censys-api-secret CENSYS_API_SECRET
Censys API secret. Can also be defined using the CENSYS_API_SECRET environment variable (default: None)
--cloudfront Check Cloudfront instead of CloudFlare. (default: False)
Une image Docker légère de CloudFlair (christophetd/cloudflair) est fournie. Un scan peut être facilement instancié à l'aide de la commande suivante.
$ docker run --rm -e CENSYS_API_ID=your-id -e CENSYS_API_SECRET=your-secret christophetd/cloudflair myvulnerable.site
Vous pouvez également créer un fichier contenant la définition des variables d'environnement et utiliser l'option --env-file de Docker.
$ cat censys.env
CENSYS_API_ID=your-id
CENSYS_API_SECRET=your-secret
$ docker run --rm --env-file=censys.env christophetd/cloudflair myvulnerable.site
Testé sur Python 3.6. N'hésitez pas à ouvrir un ticket si vous avez des rapports de bugs ou des questions.