CloudFlare 밝혀내기

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

CloudFlare을 밝혀내는 일반적인 기법

  • 도메인의 과거 DNS records를 제공하는 서비스를 이용해보자. 웹 페이지가 이전에 사용했던 IP address에서 동작하고 있을 수 있다.
  • 동일한 방법으로 과거 SSL certificates를 확인하면 origin IP address를 가리키는 정보가 있을 수 있다.
  • 다른 서브도메인의 DNS records도 확인하라. 다른 서브도메인이 동일한 서버를 직접 가리키는 경우(예: FTP, mail 또는 다른 서비스 제공용)도 있다.
  • 웹 애플리케이션 내부에서 SSRF를 찾으면 이를 악용해 서버의 IP address를 얻을 수 있다.
  • 웹 페이지의 고유한 문자열을 shodan(그리고 필요하면 google 등) 같은 검색 엔진에서 검색해보자. 해당 콘텐츠를 가진 IP address를 찾을 수 있다.
  • 유사한 방법으로 고유 문자열 대신 favicon 아이콘을 검색할 수 있다(툴: [https://github.com/karma9874/CloudFlare-IP] 또는 [https://github.com/pielco11/fav-up]).
  • 이 방법은 서버가 IP address로 접근했을 때 같은 응답을 보내야 하므로 자주 성공하지는 않지만, 가능성은 있다.

CloudFlare을 밝혀내는 도구

  • 도메인을 [http://www.crimeflare.org:82/cfs.html] 또는 [https://crimeflare.herokuapp.com]에서 검색해보자. 또는 해당 API를 사용하는 도구 CloudPeler를 사용해도 된다.
  • 도메인을 [https://leaked.site/index.php?resolver/cloudflare.0/]에서 검색해보자.
  • CF-Hero는 Cloudflare로 보호되는 웹 애플리케이션의 실제 IP addresses를 발견하도록 개발된 종합적인 reconnaissance 도구다. 다양한 방법을 통해 다중 소스 인텔리전스를 수집한다.
  • CloudFlair는 도메인 이름을 포함하는 Censys certificates를 검색하고, 해당 certificate들에서 IPv4s를 찾아 그 IP들에서 웹 페이지 접근을 시도하는 도구다.
  • CloakQuest3r: CloakQuest3r는 Cloudflare 및 유사 서비스 뒤에 숨겨진 웹사이트의 실제 IP address를 찾아내기 위해 정교하게 제작된 강력한 Python 도구다. 그 목적은 Cloudflare의 보호막 뒤에 숨겨진 웹 서버의 실제 IP address를 정확히 식별하는 것이다.
  • Censys
  • Shodan
  • Bypass-firewalls-by-DNS-history
  • 웹 페이지가 위치할 가능성이 있는 IP 들 집합이 있다면 [https://github.com/hakluke/hakoriginfinder]를 사용할 수 있다.
# 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"
done

클라우드 인프라에서 Cloudflare 발견하기

이 작업이 AWS 머신에서 수행되었더라도 다른 클라우드 제공업체에서도 동일하게 수행될 수 있다는 점에 유의하세요.

이 과정에 대한 더 자세한 설명은 다음을 확인하세요:

https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks

# 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

Cloudflare를 이용한 Cloudflare 우회

Authenticated Origin Pulls

이 메커니즘은 client SSL certificates를 사용하여 Cloudflare의 reverse-proxy 서버와 origin 서버 간의 연결을 인증하는 방식으로, 이는 mTLS라고 불립니다.

자체 인증서를 설정하는 대신, 고객은 단순히 Cloudflare의 인증서를 사용해 Cloudflare에서 오는 모든 연결을 허용할 수 있으며, 테넌트와 무관하게( regardless of the tenant ) 작동할 수 있습니다.

Caution

따라서 공격자는 Cloudflare에 자신의 도메인을 설정하고 Cloudflare의 인증서를 사용한 뒤, 이를 피해자(victim) 도메인의 IP 주소로 포인팅하면 됩니다. 이렇게 하면 공격자가 그의 도메인을 완전히 비보호 상태로 설정하더라도, Cloudflare는 전송되는 요청을 보호하지 않습니다.

More info here.

Cloudflare IP 주소 허용 목록 (Allowlist Cloudflare IP Addresses)

이 설정은 Cloudflare의 IP 주소 범위에서 시작되지 않은 연결을 차단합니다. 그러나 이전에 언급한 것과 동일하게, 공격자가 자신의 도메인을 Cloudflare에 포인팅하여 피해자 IP 주소를 가리키면 이 방식도 우회될 수 있습니다.

More info here.

스크래핑을 위한 Cloudflare 우회

Cache

때로는 단순히 웹페이지만 스크래핑하려고 Cloudflare를 우회하고 싶을 때가 있습니다. 몇 가지 옵션은 다음과 같습니다:

  • Google cache 사용: https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog
  • https://archive.org/web/ 같은 다른 캐시 서비스 사용

Tools

다음과 같은 일부 도구들은 Cloudflare의 스크래핑 방어를 우회할 수 있거나(또는 과거에 우회할 수 있었습니다):

Cloudflare Solvers

다수의 Cloudflare solver들이 개발되었습니다:

Fortified Headless Browsers

자동화된 브라우저로 감지되지 않는 headless browser를 사용하세요(이를 위해 커스터마이징이 필요할 수 있습니다). 몇 가지 옵션은 다음과 같습니다:

  • Puppeteer: stealth plugin for puppeteer.
  • Playwright: stealth plugin이 곧 Playwright에 도입될 예정입니다. 개발 현황은 여기여기에서 확인하세요.
  • Selenium: SeleniumBase는 내장된 stealth 기능을 제공하는 최신 브라우저 자동화 프레임워크입니다. 두 가지 모드를 제공합니다: UC Mode(undetected-chromedriver 기반의 최적화된 Selenium ChromeDriver 패치)와 CDP Mode(봇 탐지 우회, CAPTCHA 해결 및 Chrome DevTools Protocol의 고급 기법 활용 가능).

Smart Proxy With Cloudflare Built-In Bypass

Smart proxies는 전문 업체들이 지속적으로 업데이트하는 프록시로, Cloudflare의 보안 조치를 회피하기 위해 설계됩니다(그것이 이들의 비즈니스입니다).

다음과 같은 제공자들이 있습니다:

최적화된 솔루션을 찾는 이들에게는 ScrapeOps Proxy Aggregator가 돋보입니다. 이 서비스는 20개 이상의 프록시 제공자를 단일 API로 통합하여, 대상 도메인에 대해 가장 적합하고 비용 효율적인 프록시를 자동으로 선택하므로 Cloudflare 방어를 우회하는 데 유리한 옵션을 제공합니다.

Reverse Engineer Cloudflare Anti-Bot Protection

Cloudflare의 anti-bot 조치를 리버스 엔지니어링하는 것은 smart proxy 제공자들이 사용하는 전술로, 많은 headless browser를 운영하는 높은 비용 없이 광범위한 웹 스크래핑에 적합합니다.

장점: 이 방법은 Cloudflare의 검사를 구체적으로 노린 매우 효율적인 우회를 만들 수 있어 대규모 작업에 이상적입니다.

단점: 단점은 Cloudflare의 의도적으로 애매하게 설계된 anti-bot 시스템을 이해하고 속이는 데 필요한 복잡성으로, 다양한 전략을 테스트하고 Cloudflare가 보호를 강화할 때마다 우회를 업데이트하는 지속적인 노력이 필요하다는 점입니다.

자세한 방법은 original article에서 확인하세요.

References

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기