返回域名解析對應多個 IP 地址,網站可能部署CDN業務,咱們就須要bypass CDN,去查找真正的服務器ip地址
php
因爲成本問題,可能某些廠商並不會將全部的子域名都部署 CDN,因此若是咱們能儘可能的蒐集子域名,或許能夠找到一些沒有部署 CDN 的子域名,拿到某些服務器的真實 ip/ 段。而後關於子域名蒐集的方式不少,就不一一介紹了,我平時主要是從這幾個方面蒐集子域名:html
一、SSL 證書
二、爆破
三、Google Hacking
四、同郵箱註冊人
五、DNS 域傳送
六、頁面 JS 蒐集
七、網絡空間引擎python
工具也有不少厲害的,平時我通常使用 OneForALL + ESD + JSfinder 來進行蒐集。git
經常服務器在解析到 CDN 服務前,會解析真實 ip,若是歷史未刪除,就可能找到
github
經常使用網站:apache
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
若是目標系統有發件功能,如註冊帳號/找回密碼/RSS訂閱
服務器
咱們能夠利用空間引擎進行 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.shapp
一個小腳本,能夠快速蒐集證書dom
# -*- 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 時,會顯示證書。
在偏遠地區的服務器訪問時,可能不會訪問到 CDN 節點,而是直接訪問服務器真實 ip
因此咱們能夠搞一個偏遠地區的代理池,來訪問目標域名,有機率就能夠拿到真實 ip
也就是日常說的多地 Ping
利用 shodan 的 http.favicon.hash 語法,來匹配 icon 的 hash 值, 直接推:
https://github.com/Ridter/get_ip_by_ico/blob/master/get_ip_by_ico.py
免費版的 cf,咱們能夠經過 DDOS 來消耗對方的流量,只須要把流量打光,就會回滾到原始 ip
還有利用 cloudflare 的改 host 返回示例:
https://blog.detectify.com/2019/07/31/bypassing-cloudflare-waf-with-the-origin-server-ip-address/
裏面給了詳細的介紹,咱們能夠經過 HOST 來判斷是不是真實 ip, 具體看文章便可
好比可能有些地方,使用的 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 部署到新的域名上,而老域名因爲沒過時,可能未使用 CDN,而後就能夠直接獲取服務器真實 ip。
例如 patrilic.top > patrilic.com
域名更新時,可能老域名同時解析到真實服務器,可是沒有部署 CDN
這個能夠經過蒐集域名備案的郵箱去反查,可能會有意外收穫
上傳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