CDN的全稱是Content Delivery Network,即內容分發網絡。CDN是構建在現有網絡基礎之上的智能虛擬網絡,依靠部署在各地的邊緣服務器,通過中心平台的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。
百度百科
0x01:域名解析過程
-
傳統訪問:用戶訪問域名-->解析IP-->訪問目標主機
-
簡單模式:用戶訪問域名-->CDN節點-->真實IP-->目標主機
-
360網站衛士:用戶訪問域名-->CDN節點(雲WAF)-->真實IP-->目標主機
注:目前場面上大多數CDN服務商都提供了雲WAF的配置選項,內置了多種安全防護策略,可對SQL注入、XSS跨站、Webshell上傳、后門隔離保護、命令注入、惡意掃描等攻擊行為進行有效攔截。
0x02:CDN配置方法
-
1、將域名的NS記錄指向CDN廠商提供的DNS服務器。
-
2、給域名設置一個cname記錄,將它指向CDN廠商提供的另一個域名。
0x03:CDN檢測方法
利用“全球Ping”快速檢測目標網址是否存在CDN,如果得到的IP歸屬地是某CDN服務商,或者每個地區得到的IP地址都不一樣則說明可能存在CDN,可用以下幾個網站檢測!
https://wepcc.com
http://ping.chinaz.com
https://asm.ca.com/en/ping.php
注:全球Ping有一定機率可以得到目標服務器真實IP地址,因為CDN服務商沒有某些地區CDN節點。
0x04:查找真實IP方法
(1) phpinfo等探針找到真實IP
通過l.php、phpinfo.php等探針類文件即可得到真實IP地址,phpinfo.php搜索SERVER_NAME。
(2) 網站根域或子域找到真實IP
大部分CDN服務都是按流量進行收費的,所以一些網站管理員只給重要業務部署CDN,也有很多人忘了給“根域”部署CDN,所以我們可以盡可能的多搜集一些子域名來嘗試得到真實IP地址。
注:有時多個子域名可能不會解析到同一台服務器,而是根據公司業務的重要與非重要性將子域名解析在內網或外網的不同服務器中,需要一定的分析能力。
(3) 利用郵件服務器找到真實IP
Web跟Email服務屬同服務器的情況下可以通過Email來查詢目標真實IP地址,但如果Web跟Email屬不同服務器,那么我們通過Email得到的可能只是郵件服務器的IP地址,所以在hosts文件中即使綁定IP后無法訪問目標網站也屬正常現象。常見發送郵件的功能有:注冊用戶、找回密碼等等。
(4) 域名歷史解析記錄找到真實IP
查詢目標域名歷史解析記錄可能會找到部署CDN前的解析記錄(真實IP地址),可用以下幾個網站查詢。
https://domain.8aq.net //基於Rapid7 Open Data
https://x.threatbook.cn
https://webiplookup.com
https://viewdns.info/iphistory
https://securitytrails.com/#search
https://toolbar.netcraft.com/site_report
(5) FOFA查詢網站標題找到真實IP
利用“FOFA網絡空間安全搜索引擎”搜索網站源代碼中的title標簽內容即可得到真實IP地址。
title="*** ***** – Multi Asset Fund"
(6) Censys查詢SSL證書找到真實IP
利用“Censys網絡空間搜索引擎”搜索網站的SSL證書及HASH,在https://crt.sh上查找目標網站SSL證書的HASH,然后再用Censys搜索該HASH即可得到真實IP地址。
443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:***trade.com
(7) 自建CDN節點服務器找到真實IP
這篇筆記當時沒有記錄下來,其實就是MS17-010剛出來時很多機器都還沒打補丁,批量過程中打了一台別人自建的CDN節點服務器,然后在里邊發現很多解析到這邊的IP地址,其實這些IP地址就是某些網站的真實IP,所以說這種方法也算是一種思路吧,但是得先拿到這台CDN節點服務器的權限。
注:一些免費或自建CDN流量都不會很多,可以用DDOS攻擊將其流量耗盡后即可顯示出真實IP地址。
(8) 分析目標C段來簡單判斷真實IP
這種方法得看目標有多少子域名吧,如果子域夠多,且又有多台服務器(同段),找一個沒有部署CDN的子域名,然后掃描整個C段查找與目標站Title一致的即可得到它的真實IP地址!
網站域名 |
真實IP地址 |
CDN節點IP地址 |
111.test.com(目標) |
192.168.1.10 |
8.8.8.8 |
222.test.com |
192.168.1.11 |
9.9.9.9 |
333.test.com |
192.168.1.12 |
沒有CDN |
假如目標站111.test.com解析在192.168.1.10,title:90sec社區,通過查詢333.test.com這個子域名得到333的真實IP地址192.168.1.12,然后掃描192.168.1.x 整個C段,掃到192.168.1.10這個IP后發現一個title為“90sec社區”的網站,域名也是111.test.com后就能確定192.168.1.10是它的真實IP地址了,雖然這種方法沒有實踐過,但肯定是有這種情況的,在遇到時可以嘗試一下?
(9) 利用目標網站的漏洞找到真實IP
Web漏洞:
XSS、SSRF、命令執行、文件上傳等,需要先繞過雲WAF的安全防護。
敏感信息泄露:
phpinfo、Apache status和Jboss status敏感信息泄露,網頁源代碼泄露,SVN、Github信息泄露等。
(10) 通過社工CDN控制台找到真實IP
(11) Zmap全網掃描及F5 LTM解碼法
這兩種方法都是前輩們寫的,個人感覺較為復雜,並沒有實踐測試過,不知道是否真可行?
注:部署了CDN的網站有必要設置嚴格訪問控制策略,僅允許CDN節點訪問網站真實服務器(80端口),這樣設置的好處就是即使別人在hosts文件中綁定了真實IP以后仍然無法訪問。筆者曾經在一次滲透測試過程中也遇到過類似情況,就是成功綁定了真實IP后,雖然能夠正常訪問到目標網站,但是仍然沒有繞過雲WAF,具體情況有點記不太清了,當時沒有去細研究這個問題!