
🔎 Censys의 인터넷 전체 스캔 데이터를 사용하여 CloudFlare 뒤에 있는 웹사이트의 원본 서버를 찾습니다.
중요 사항: 2024년 후반부터 Censys는 무료 계정에 더 이상 API 액세스를 제공하지 않습니다. 이는 CloudFlair가 더 이상 무료 Censys 계정에서 작동하지 않음을 의미합니다.
CloudFlair는 CloudFlare(또는 CloudFront)로 보호되는 웹사이트의 오리진 서버 중 공개적으로 노출되어 있으며 해당 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
[*] 대상이 CloudFlare 뒤에 있는 것으로 보입니다.
[*] Censys를 사용하여 "myvulnerable.site"와 일치하는 인증서를 찾는 중
[*] "myvulnerable.site"와 일치하는 인증서 75개를 찾았습니다.
[*] 이러한 인증서를 제시하는 IPv4 호스트를 찾는 중...
[*] "myvulnerable.site"에 발급된 인증서를 제시하는 IPv4 호스트 10개를 찾았습니다.
- 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
[*] https://myvulnerable.site에서 대상 홈페이지를 검색 중
[*] 후보 오리진 서버 테스트 중
- 51.194.77.1
- 223.172.21.75
- 18.136.111.24
예상치 못한 HTTP 상태 코드 404로 응답
- 127.200.220.231
3초 후 타임아웃
- 177.67.208.72
- 137.67.239.174
- 182.102.141.194
- 8.154.231.164
- 37.184.84.44
- 78.25.205.83
[*] myvulnerable.site의 가능한 오리진 서버 2개를 찾았습니다!
- 177.67.208.72 (HTML 콘텐츠가 myvulnerable.site와 일치)
- 182.102.141.194 (HTML 콘텐츠가 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에서 테스트되었습니다. 버그 신고나 질문이 있으시면 이슈를 열어주세요.