
🔎 Censys のインターネット全体スキャンデータを利用して、CloudFlare の背後にあるウェブサイトのオリジンサーバーを見つけます。
重要なお知らせ:2024年後半以降、Censysは無料アカウントへのAPIアクセスを提供しなくなりました。つまり、CloudFlairは無料のCensysアカウントでは動作しなくなりました。
CloudFlairは、CloudFlare(またはCloudFront)で保護されたWebサイトのうち、一般に公開されており、関連するCDNのIP範囲へのネットワークアクセスを適切に制限していないオリジンサーバーを見つけるためのツールです。
このツールは、Censysのインターネット全体のスキャンデータを使用して、ターゲットのドメイン名に関連付けられたSSL証明書を提示している公開されたIPv4ホストを見つけます。APIキーが必要で、Censysアカウントから取得できます。
この一般的な設定ミスとCloudFlairの動作の詳細については、関連ブログ記事 https://blog.christophetd.fr/bypassing-cloudflare-using-internet-wide-scan-data/ を参照してください。
以下はCloudFlairの動作例です。
$ 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)
(この例のIPアドレスは難読化され、ランダムに生成されたIPに置き換えられています)
$ 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
または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 スキャンするドメイン
options:
-h, --help このヘルプメッセージを表示して終了
-o OUTPUT_FILE, --output OUTPUT_FILE
可能性のあるオリジンサーバーを出力するファイル(デフォルト: None)
--censys-api-id CENSYS_API_ID
Censys API ID。環境変数CENSYS_API_IDでも定義可能(デフォルト: None)
--censys-api-secret CENSYS_API_SECRET
Censys APIシークレット。環境変数CENSYS_API_SECRETでも定義可能(デフォルト: None)
--cloudfront CloudFlareの代わりにCloudfrontをチェック(デフォルト: False)
CloudFlairの軽量Dockerイメージ(christophetd/cloudflair)が提供されています。以下のコマンドで簡単にスキャンを開始できます。
$ docker run --rm -e CENSYS_API_ID=your-id -e CENSYS_API_SECRET=your-secret christophetd/cloudflair myvulnerable.site
環境変数の定義を含むファイルを作成し、Dockerの --env-file オプションを使用することもできます。
$ cat censys.env
CENSYS_API_ID=your-id
CENSYS_API_SECRET=your-secret
$ docker run --rm --env-file=censys.env christophetd/cloudflair myvulnerable.site
Python 3.6でテスト済みです。バグ報告や質問がある場合は、お気軽にissueを開いてください。