Origin IPs Behind WAF

Identifying the Presence of a WAF

Để tìm IP sau WAF, trước tiên ta cần xác định xem website có đằng sau WAF hay không bằng cách dùng dig để lấy IP và dùng ipinfo để lấy thông tin về IP.

# Get the IP address
dig +short example.com
 
# Check the organization
curl -s https://ipinfo.io/IP | jq -r '.org'

Một số dấu hiệu trong kết quả trả về từ ipinfo cho thấy website đứng đằng sau WAF:

  • AWS WAF: có cookie AWSLBAWSLBCORS.
  • Cloudflare: thông tin về tổ chức sẽ có “Cloudflare, Inc.”.
  • Các WAF khác sẽ có những đặc điểm nhận diện đặc thù.

Cũng có thể dùng host kết hợp với whois để tìm IP cũng như là tổ chức của IP:

@deadsec ~  host enji.ai
enji.ai has address 172.66.XX.XX
enji.ai has address 162.159.XX.XX
@deadsec ~  whois 172.66.XX.XX
...
NetRange:       172.64.0.0 - 172.71.255.255
NetName:        CLOUDFLARENET
OrgName:        Cloudflare, Inc.
...

Wappalyzer cũng có thể dùng để phát hiện WAF:

Techniques

  1. Historical DNS Records: sử dụng DNS history để tìm IP của domain tại thời điểm trước khi nó được triển khai WAF. Có thể sử dụng:

    • SecurityTrails DNS History: export các A records rồi trích xuất IP: grep -E -o "([0-9]{1,3}[\\.]){3}[0-9]{1,3}" dns_history.txt | sort -u > potential_ips.txt.
    • DNS Dumpster: tạo network map rồi tìm các IP không có WAF.
  2. SSL Certificate Information: Lý do mà SSL cert có thể được dùng để tìm origin IP:

    When a server hosts an SSL certificate, various details about the certificate, including its public key, can be used to trace back to the original server, even when the server is behind a CDN.
    • Censys:

      • Tìm các cert sử dụng target domain.
      • Xem từng cert rồi xem IP của chúng.
      • Thu thập tất cả các IP có liên quan.
      • Ví dụ:

      Bằng cách sử dụng IP tìm được, ta có thể sử dụng curl với hostname của target để kiểm tra xem IP đó có phải là IP thật của server hay không: curl -v http://52.19.60.183/ -H 'Host: enji.ai'

    • Shodan: sử dụng các dork sau:

      # Search by Common Name (CN)
      ssl.cert.subject.CN:"example.com"
       
      # Search in all certificate fields (broader)
      ssl:"example.com"
  3. Email Headers Analysis: email từ target domain thường chứa internal IP:

    • Trigger email từ target (register, password reset, newsletters)
    • Kiểm tra headers của email, cụ thể:
      • Return-Path
      • Received
      • X-Originating-IP
  4. Tìm kiếm thông qua SPF record: truy cập MX Lookup Tool - Check your DNS MX Records online - MxToolbox và nhập vào target domain để tìm các SPF record.

  5. Direct IP Testing: nếu chúng ta có dãy IP của org thì có thể kiểm tra bằng cách gửi request kèm theo hostname của target. Ví dụ, nếu dãy IP của org trong file potential_ips.txt và hostname là example.com thì ta có thể kiểm tra như sau:

    # Test single IP
    curl -s -k -H "Host: example.com" https://POTENTIAL_IP/
     
    # Test multiple IPs
    for ip in $(cat potential_ips.txt); do
      org=$(curl -s https://ipinfo.io/$ip | jq -r '.org')
      title=$(timeout 2 curl -s -k -H "Host: example.com" https://$ip/ | pup 'title text{}')
      echo "IP: $ip | Title: $title | Org: $org"
    done
  6. Subdomain: một vài subdomain chẳng hạn như môi trường dev hoặc staging thường không được triển khai WAF.

  7. CDN IP ranges: nếu chúng ta biết target được host ở trên AWS thì có thể sử dụng dãy IP của AWS rồi dùng curl để kiểm tra từng IP như trên.

    $ cat amazon-ipv4-sni.txt | grep enji.ai
    ...
    52.209.176.32:443 -- [enji.ai *.comedian.maddevs.co *.staging.enji.ai *.enji.ai *.dev.enji.ai comedian.maddevs.co]
    ...
  8. Favicon Hashes:

    • Truy cập The Favicon Finder và nhập target domain để tìm link đến favicon.
    • Sử dụng Favicon hash generator để tính hash của favicon.
    • Tìm trên Censys và Shodan sử dụng hash của favicon để tìm các IP thật của website.
Ngoài Censys và Shodan thì còn có một số search engine khác chẳng hạn như **Fofa**, **ZoomEye** hay **VirusTotal**.

Additional Methods

  • Host header fuzzing: Việc fuzzing Host header sử dụng các sudmain khác nhau và các IP loopback cũng có thể giúp bypass WAF.
  • WordPress pingback:: Trong trường hợp của WordPress, có một kỹ thuật tên là pingback mà đôi khi cho phép kẻ tấn công lấy địa chỉ IP thực của server. Xem thêm.

Resources

Articles

Tools

Dorks

IPs of an Organization

Sử dụng whois trên AS mà IP thuộc về để tìm thông tin liên quan đến tổ chức sở hữu AS đó:

whois AS12345

Tìm dãy IP của một AS sử dụng asnmap:

asnmap -a AS394160

Cũng có thể sử dụng routing database:

whois -h whois.radb.net -- '-i origin AS394160' | grep "route:

Hostnames of IPs

Techniques

Dùng whois cho IP:

whois 8.8.8.8

Có thể sử dụng Censys để tìm Forward DNS như trong phần Origin IPs Behind WAF.

Tools