项目介绍

christophetd/CloudFlair 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,目前获得 3.0k 个 Star、385 次 Fork。

仓库全名
christophetd/CloudFlair
Star 数
3.0k
Fork 数
385
未关闭 Issue
11

README 摘要

CloudFlair Important note: As of late 2024, Censys does not provide API access to free accounts anymore. This means CloudFlair does not work with free Censys accounts anymore. CloudFlair is a tool to find origin servers of websites protected by CloudFlare (or CloudFront) which are publicly exposed and don't appropriately restrict network access to the relevant CDN IP ranges. The tool uses Internet-wide scan data…

完整内容见 GitHub 原始 README 或本页 。

常见问题

CloudFlair 用什么语言开发?

主要使用 Python 编写,目前有 3.0k 个 Star。

如何获取 CloudFlair 的源码?

可以直接克隆仓库:git clone https://github.com/christophetd/CloudFlair.git,默认分支为 master;安装与运行步骤见仓库 README。

CloudFlair 最近还在维护吗?

仓库最近一次更新为 2025年5月1日,当前有 11 个未关闭 Issue;Star 数为 3.0k,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

🔎 Find origin servers of websites behind CloudFlare by using Internet-wide scan data from Censys.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
3811
价值分
1911
活跃状态
活跃

语言占比

Dockerfile
Python

README

CloudFlair

Important note: As of late 2024, Censys does not provide API access to free accounts anymore. This means CloudFlair does not work with free Censys accounts anymore.

CloudFlair is a tool to find origin servers of websites protected by CloudFlare (or CloudFront) which are publicly exposed and don’t appropriately restrict network access to the relevant CDN IP ranges.

The tool uses Internet-wide scan data from Censys to find exposed IPv4 hosts presenting an SSL certificate associated with the target’s domain name. API keys are required and can be retrieved from your Censys account.

For more detail about this common misconfiguration and how CloudFlair works, refer to the companion blog post at https://blog.christophetd.fr/bypassing-cloudflare-using-internet-wide-scan-data/.

Here’s what CloudFlair looks like in 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)

(The IP addresses in this example have been obfuscated and replaced by randomly generated IPs)

Setup

  1. Register an account (free) on https://search.censys.io/register
  2. Browse to https://search.censys.io/account/api, and set two environment variables with your API ID and API secret
$ export CENSYS_API_ID=...
$ export CENSYS_API_SECRET=...
  1. Clone the repository
$ git clone https://github.com/christophetd/CloudFlair.git
  1. Create a virtual env and install the dependencies
cd CloudFlair
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
  1. Run CloudFlair (see Usage below for more detail)
python cloudflair.py myvulnerable.site

or for CloudFront

python cloudflair.py myvulnerable.site --cloudfront

Usage

$ 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)

Docker image

A lightweight Docker image of CloudFlair (christophetd/cloudflair) is provided. A scan can easily be instantiated using the following command.

$ docker run --rm -e CENSYS_API_ID=your-id -e CENSYS_API_SECRET=your-secret christophetd/cloudflair myvulnerable.site

You can also create a file containing the definition of the environment variables, and use the Docker--env-file option.

$ cat censys.env
CENSYS_API_ID=your-id
CENSYS_API_SECRET=your-secret

$ docker run --rm --env-file=censys.env christophetd/cloudflair myvulnerable.site

Compatibility

Tested on Python 3.6. Feel free to open an issue if you have bug reports or questions.

评论

暂无评论