返回域名解析對應多個 IP 地址,網站可能部署CDN業務,我們就需要bypass CDN,去查找真正的服務器ip地址
0x01.域名搜集
由於成本問題,可能某些廠商並不會將所有的子域名都部署 CDN,所以如果我們能盡量的搜集子域名,或許可以找到一些沒有部署 CDN 的子域名,拿到某些服務器的真實 ip/ 段。然后關於子域名搜集的方式很多,就不一一介紹了,我平時主要是從這幾個方面搜集子域名:
1、SSL 證書
2、爆破
3、Google Hacking
4、同郵箱注冊人
5、DNS 域傳送
6、頁面 JS 搜集
7、網絡空間引擎
工具也有很多厲害的,平時我一般使用 OneForALL + ESD + JSfinder 來進行搜集。
0x02.查詢 DNS 歷史解析記錄
常常服務器在解析到 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
0x03.MX 記錄(郵件探測)
如果目標系統有發件功能,如注冊賬號/找回密碼/RSS訂閱
0x04.SSL 證書探測
我們可以利用空間引擎進行 SSL 證書探測
443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:www.xxx.com
或443.https.tls.chain.parsed.names
https://censys.io/
https://www.shodan.io/
https://fofa.so/
https://www.zoomeye.org/
再放一個搜集證書的網站:
https://crt.sh
一個小腳本,可以快速搜集證書
# -*- coding: utf-8 -*-
# @Time : 2019-10-08 22:51
# @Author : Patrilic
# @FileName: SSL_subdomain.py
# @Software: PyCharm
import requests
import re
TIME_OUT = 60
def 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 時,會顯示證書。
0x05.偏遠地區服務器訪問
在偏遠地區的服務器訪問時,可能不會訪問到 CDN 節點,而是直接訪問服務器真實 ip
所以我們可以搞一個偏遠地區的代理池,來訪問目標域名,有概率就可以拿到真實 ip
也就是平常說的多地 Ping
0x06.favicon_hash 匹配
利用 shodan 的 http.favicon.hash 語法,來匹配 icon 的 hash 值, 直接推:
https://github.com/Ridter/get_ip_by_ico/blob/master/get_ip_by_ico.py
0x07.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, 具體看文章即可
0x08.奇特的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
0x09.利用老域名
在換新域名時,常常將 CDN 部署到新的域名上,而老域名由於沒過期,可能未使用 CDN,然后就可以直接獲取服務器真實 ip。
例如 patrilic.top > patrilic.com
域名更新時,可能老域名同時解析到真實服務器,但是沒有部署 CDN
這個可以通過搜集域名備案的郵箱去反查,可能會有意外收獲
0x10.其他方法
上傳phpinfo、ssrf等漏洞
參考鏈接
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