天天看點

繞過 CDN 尋找真實 IP 位址的各種姿勢

0x01 常見 Bypass 方法

域名搜集

由于成本問題,可能某些廠商并不會将所有的子域名都部署 CDN,是以如果我們能盡量的搜集子域名,或許可以找到一些沒有部署 CDN 的子域名,拿到某些伺服器的真實 ip/ 段

然後關于子域名搜集的方式很多,就不一一介紹了,我平時主要是從這幾個方面搜集子域名:

1、SSL 證書

2、爆破

3、Google Hacking

4、同郵箱注冊人

4、DNS 域傳送

5、頁面 JS 搜集

6、網絡空間引擎

工具也有很多厲害的,平時我一般使用 OneForALL + ESD + JSfinder 來進行搜集,(ESD 可以加載 layer 的字典,很好用)

查詢 DNS 曆史解析記錄

常常伺服器在解析到 CDN 服務前,會解析真實 ip,如果曆史未删除,就可能找到

繞過 CDN 尋找真實 IP 位址的各種姿勢

常用網站:

http://viewdns.info/

https://x.threatbook.cn/

http://www.17ce.com/

https://dnsdb.io/zh-cn/

https://securitytrails.com/

http://www.ip138.com/

https://github.com/vincentcox/bypass-firewalls-by-DNS-history

MX 記錄(郵件探測)

這個很簡單,如果目标系統有發件功能,通常在注冊使用者/找回密碼等地方

繞過 CDN 尋找真實 IP 位址的各種姿勢

SSL 證書探測

我們可以利用空間引擎進行 SSL 證書探測

443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:www.baidu.com
繞過 CDN 尋找真實 IP 位址的各種姿勢

再放一個搜集證書的網站:

https://crt.sh

一個小腳本,可以快速搜集證書

# -*- coding: utf-8 -*-# @Time    : 2019-10-08 22:51# @Author  : Patrilic# @FileName: SSL_subdomain.py# @Software: PyCharm
import requestsimport re
TIME_OUT = 60def get_SSL(domain):    domains = []    url = 'https://crt.sh/?q=%25.{}'.format(domain)    response = requests.get(url,timeout=TIME_OUT)    # print(response.text)    ssl = re.findall("<TD>(.*?).{}</TD>".format(domain),response.text)    for i in ssl:        i += '.' + domain        domains.append(i)    print(domains)
if __name__ == '__main__':    get_SSL("baidu.com")           

複制

還有一種方式,就是搜集 SSL 證書 Hash,然後周遊 ip 去查詢證書 hash,如果比對到相同的,證明這個 ip 就是那個 域名同根證書的伺服器真實 ip

簡單來說,就是周遊 0.0.0.0/0:443,通過 ip 連接配接 https 時,會顯示證書

當然,也可以用 censys 等引擎

繞過 CDN 尋找真實 IP 位址的各種姿勢

偏遠地區伺服器通路

在偏遠地區的伺服器通路時,可能不會通路到 CDN 節點,而是直接通路伺服器真實 ip

是以我們可以搞一個偏遠地區的代理池,來通路目标域名,有機率就可以拿到真實 ip

也就是平常說的多地 Ping

繞過 CDN 尋找真實 IP 位址的各種姿勢

favicon_hash 比對

利用 shodan 的 http.favicon.hash 文法,來比對 icon 的 hash 值, 直接推:

https://github.com/Ridter/get_ip_by_ico/blob/master/get_ip_by_ico.py

CloudFlare Bypass

免費版的 cf,我們可以通過 DDOS 來消耗對方的流量,隻需要把流量打光,就會復原到原始 ip

還有利用 cloudflare 的改 host 傳回示例:

https://blog.detectify.com/2019/07/31/bypassing-cloudflare-waf-with-the-origin-server-ip-address/

裡面給了詳細的介紹,我們可以通過 HOST 來判斷是否是真實 ip, 具體看文章即可

奇特的 ping

比如可能有些地方,使用的 CDN 都是以 www.xxx.edu.cn,例如 www.cuit.edu.cn,www.jwc.cuit.edu.cn

可能去掉字首的 www,就可能繞過 CDN 了,猜測應該是類似于 Apache VirtualHost, 可參考

https://httpd.apache.org/docs/2.4/en/vhosts/examples.html

例如:

繞過 CDN 尋找真實 IP 位址的各種姿勢

我這裡其實是 ping 了 www.xxx.xxx.cn 和 xxx.xxx.cn

這樣就可以繞過 CDN 的檢測

利用老域名

在換新域名時,常常将 CDN 部署到新的域名上,而老域名由于沒過期,可能未使用 CDN,然後就可以直接擷取伺服器真實 ip。

例如 patrilic.top > patrilic.com

域名更新時,可能老域名同時解析到真實伺服器,但是沒有部署 CDN

這個可以通過搜集域名備案的郵箱去反查,可能會有意外收獲

暴力比對

找到目标伺服器 IP 段後,可以直接進行暴力比對 ,使用 masscan 掃描 HTTP banner,然後比對到目标域名的相同 banner

最後是 DDos/ 社工 CDN 平台等

0x02 其他方法

phpinfo

繞過 CDN 尋找真實 IP 位址的各種姿勢

ssrf,檔案上傳等漏洞

略..

0x03 參考連結

https://github.com/shmilylty/OneForAll

https://github.com/FeeiCN/ESD

https://github.com/Threezh1/JSFinder

https://github.com/AI0TSec/blog/issues/8

https://www.4hou.com/tools/8251.html

https://www.freebuf.com/sectool/112583.html