近日HVV培訓以及面試,有人問了CDN該如何繞過找到目標真實IP,這向來是個老生常談的問題,而且網上大多都有,但是有些不夠全面,今天把繞過CDN全理一理。術語叫做“深入淺出”。
CDN簡介
定義
內容分發網絡(英語:Content Delivery Network或Content Distribution Network,縮寫:CDN)是指一種透過互聯網互相連接的電腦網絡系統,利用最靠近每位用戶的服務器,更快、更可靠地將音樂、圖片、視頻、應用程序及其他文件發送給用戶,來提供高性能、可擴展性及低成本的網絡內容傳遞給用戶。
CDN是利用緩存技術,解決如何將數據快速可靠從源站傳遞到用戶的問題。用戶獲取數據時,不需要直接從源站獲取,通過CDN分發,用戶可以從一個較優的服務器獲取數據,從而達到快速訪問,并減少源站負載壓力的目的(負載均衡)
工作過程
- 用戶在瀏覽器輸入域名,先向DNS服務器發送請求
- DNS服務器將域名解析權交(通過CNAME)給CDN專用DNS服務器
- 客戶端根據返回的ip訪問CDN負載均衡設備
- 負載均衡設備根據當前的負載情況和用戶所需內容,返回合適的ip
- 客戶端最后根據ip訪問對應的CDN緩存服務器
優點
- 緩解原服務器訪問壓力
- 解決互聯互通難題
- 解決網站突發流量的問題
- 合理利用互聯網資源
- 全面預防單點故障
- 改善用戶的訪問的質量和體驗
- 提供全面、準確、和詳細的數據統計
- 有效的防治黑客攻擊源站
......
適用范圍
一般來說以資訊、內容等為主的網站,具有一定訪問體量的網站
- 靜態內容(html、js、css、image等,如圖床)
- 視音頻、大文件下載,分發加速:嗶哩嗶哩、騰訊等視頻,百度云盤、藍奏云等
- 視頻直播加速:斗魚、淘寶、虎牙直播
- 移動應用加速:移動App內圖片、頁面、短視頻、UGC等內容,小程序等
像直播這一類必有CDN,因為一個網站直播流涌入大量用戶,現在任何一家直播平臺都沒有直接負載的服務器能力??粗辈ピ倏斓木W速都有一定延遲的原因之一就是,需要在CDN里緩存一部分,用戶從CDN里觀看。
判斷是否存在CDN
方法一:PingPingPing
不同地區對應著不同的CDN中心,所以使用不同站點的ping服務可分配到不同的CDN。這很簡單,使用各種多站點ping服務來檢查對應的IP地址是否唯一。如果不是唯一的,則使用大多數 CDN。多站Ping網站為:
http://ping.chinaz.com/http://ping.aizhan.com/http://tools.ipip.net/ping.php (強烈推薦這個,這個默認多站ping,真的很多)
【----幫助網安學習,以下所有學習資料關注我,私信回復“資料”獲取----】
① 網安學習成長路徑思維導圖
?、?60+網安經典常用工具包
③ 100+SRC漏洞分析報告
?、?150+網安攻防實戰技術電子書
?、?最權威CISSP 認證考試指南+題庫
?、?超1800頁CTF實戰技巧手冊
?、?最新網安大廠面試題合集(含答案)
?、?APP客戶端安全檢測指南(Android/ target=_blank class=infotextkey>安卓+IOS)
方法二:nslookup
使用 nslookup 進行檢測,原理同上,如果返回域名解析對應多個 IP 地址多半是使用了 CDN。
有 CDN 的示例:
> ctfking.com
服務器: public1.alidns.com
Address: 223.5.5.5
非權威應答:
名稱: d831e3eec87f7d3c02a6-mini-l2.qcloudzygj.com
Addresses: 106.55.85.170
106.55.85.167
106.55.86.71
Aliases: ctfking.com
d14ca549ac628ef817e7beaa5095976f.qcloudwzgj.com
無CDN的示例:
> nbufe.edu.cn
服務器: public1.alidns.com
Address: 223.5.5.5
名稱: nbufe.edu.cn
方法三:工具
CDN Finder
CDN繞過
方法一:查詢DNS解析記錄
1.查看IP與域名綁定的歷史記錄。使用 CDN 之前可能有記錄。相關查詢網站為:
Dnsdb
微步在線
Netcraft
IPIP(沒錯又是這個網站,它太猛了)
2.借助Securitytrails平臺(
https://securitytrails.com/)
攻擊者可以查明真實的原始IP。他們只需在搜索字段中輸入站點域名并按 ENTER,即可在左側菜單中找到“歷史數據”。
如何找到隱藏在 CloudFlare 或 Tor 背后的真實原始 IP?
除了過去的 DNS 記錄,即使是當前的記錄也可能泄露原始服務器 IP。例如,MX 記錄是查找 IP 的常用方法。如果網站在與 Web 相同的服務器和 IP 上托管自己的郵件服務器,則原始服務器 IP 將在 MX 記錄中。
方法二:查詢子域名
畢竟CDN還是不便宜,所以很多站長可能只會在主站或者流量大的子站做一個CDN,而很多小站子站跟主站在同一個服務器或者同C段,此時可以通過子域對應的IP查詢,幫助找到真實IP站點。
微步在線
上面提到的微步在線功能強大,黑客只需輸入域名即可查找(如baidu.com),點擊子域選項即可找到其子域,但免費用戶每月只有5次免費查詢機會。
Dnsdb
黑客只需要輸入baidu.com TYPE:A就可以收集到百度的子域名和IP。
谷歌站點:baidu.com-www 可以看到除WWW以外的子域
子域掃描器
Layer子域名挖掘機和lijiejie的subdomain那個工具都很不錯
推薦長亭的xray
方法三:網絡空間引擎
fofa、鷹圖、Zoomeye、shodan、360
推薦鷹圖
只需輸入:title:“網站的title關鍵字”或者body:“網站的body特征”就可以找出收錄的有這些關鍵字的ip域名,很多時候能獲取網站的真實ip
方法四:使用SSL證書尋找真實原IP
如果您在 xyz123boot.com 上托管服務,則原始服務器 IP 為 136.23.63.44。CloudFlare 將為您提供 DDoS 防護、Web 應用防火墻和其他一些安全服務,以保護您的服務免受攻擊。為此,您的 Web 服務器必須支持 SSL 并具有證書。此時,CloudFlare 與您的服務器之間的通信,就像您與 CloudFlare 之間的通信一樣,將被加密(即沒有靈活的 SSL)。這看起來很安全,但問題是當你直接連接到443端口(https://136.23.63.44:443)上的IP時,會暴露SSL證書。
此時,如果攻擊者掃描0.0.0.0/0,整個互聯網,就可以在xyz123boot.com的443端口獲取有效證書,進而獲取提供給你的web服務器IP。
目前,Censys 工具可以掃描整個互聯網。Censys 是用于搜索聯網設備信息的新搜索引擎。安全專家可以使用它來評估其實施的安全性,黑客可以使用它作為初步調查。攻擊目標和收集目標信息的強大武器。Censys 搜索引擎可以掃描整個互聯網。Censys每天掃描IPv4地址空間,搜索所有聯網設備并收集相關信息,并返回資源(如設備、網站、證書等)配置和部署的整體報告。
攻擊者唯一需要做的就是將上述搜索詞轉換為實際的搜索查詢參數。
xyz123boot.com證書的搜索查詢參數為:parsed.names: xyz123boot.com
只顯示有效證書的查詢參數為:tags.raw:trusted
攻擊者可以在 Censys 上實現多個參數的組合,這可以通過使用簡單的布爾邏輯來完成。
組合的搜索參數是:parsed.names:xyz123boot.com 和 tags.raw:trusted
Censys 將向您顯示在掃描中找到的符合上述搜索條件的所有標準證書。
要一一查看這些搜索結果,攻擊者可以通過單擊右側的“探索”來打開一個包含多個工具的下拉菜單。什么在使用這個證書?> IPv4 主機
使用給定的 SSL 證書
如果您是執法人員,并且想找到隱藏在 cheesecp5vaogohv.onion 下的兒童色情網站。最好的辦法是找到它的原始IP,這樣就可以追蹤它的托管服務器,甚至可以找出它背后的運營商和財務線索。
隱藏服務具有 SSL 證書。要查找它使用的 IPv4 主機,只需將“SHA1 指紋”(簽名證書的 sha1 值)粘貼到 Censys IPv4 主機搜索中即可找到證書。這種方法很容易找到配置錯誤的Web服務器。
方法五:使用HTTP頭找到真正的原始IP
借助 SecurityTrails 這樣的平臺,任何人都可以在海量的大數據中搜索自己的目標,甚至可以通過比較 HTTP 標頭找到原始服務器。
特別是當用戶有一個非常特殊的服務器名稱和軟件名稱時,攻擊者更容易找到你。
如果要搜索的數據很多,如上所述,攻擊者可以在 Censys 上組合搜索參數。假設您正在與 1500 個 Web 服務器共享您的服務器 HTTP 標頭,所有這些服務器都發送相同的標頭參數和值組合。而且您還使用新的 PHP 框架來發送唯一的 HTTP 標頭(例如:X-Generated-Via: XYZ 框架),目前約有 400 位網站管理員使用該框架。最終,在三臺服務器的交匯處,通過人工操作即可找到IP,整個過程僅需幾秒。
例如,Censys上用于匹配服務器頭的搜索參數為
80.http.get.headers.server:,查找CloudFlare服務的網站的參數如下:
80.http.get.headers.server:cloudflare
方法六:利用網站返回的內容尋找真實的原IP
如果原服務器IP也返回網站內容,可以在網上搜索很多相關資料。
瀏覽網站源代碼以查找獨特的代碼片段。在 JAVAScript 中使用具有訪問權限或標識符參數的第三方服務(例如 Google Analytics、reCAPTCHA)是攻擊者經常使用的一種方法。
以下是從 HackTheBox 網站獲得的 Google Analytics 跟蹤代碼示例:
ga('創建','UA-93577176-1','auto');80.http.get.body 可以使用:參數通過body/source過濾Censys數據。不幸的是,普通搜索字段有局限性。但是您可以在 Censys 請求研究訪問權限,這使您可以通過 Google BigQuery 進行更強大的查詢。
Shodan 是一個類似于 Censys 的服務,同樣提供 http.html 搜索參數。
搜索示例:
https://www.shodan.io/search?query=http.html%3AUA-32023260-1
方法七:使用外地主機解析域名
國內很多CDN廠商因為各種原因只做國內線,國外線路可能幾乎沒有。這時候我們可能會使用外地主機直接訪問真實IP。
方法八:網站漏洞搜索
- 目標敏感文件泄露,如phpinfo、GitHub信息泄露等探針
- XSS盲打、命令執行反向shell、SSRF等
- 無論是社會工程還是其他手段,目標網站獲取CDN中的管理員賬號,在CDN的配置中可以找到網站的真實IP。
方法九:網站郵件訂閱搜索
RSS郵件訂閱,很多網站都有自己的sendmail,會發郵件給我們。此時,服務器的真實IP將包含在郵件的源代碼中。
方法十:用Zmap掃描全網
要找到xiaix.me網站的真實IP,我們首先從apnic獲取IP段,然后使用Zmap的banner-grab掃描出開放80端口的主機進行banner抓包,最后在Host中寫入xiaix.me http請求。
方法十一:F5 LTM解碼方法
服務器使用F5 LTM進行負載均衡時,也可以通過set-cookie關鍵字解碼得到真實ip,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,第一個小數部分的十進制數是487098378取出來,然后轉換成十六進制數1d08880a,然后從后往前,取出四位數字,就是0a.88.08.1d,最后再轉換成十進制數10.136.8.29,也是最后一個真實IP。
方法十二:網頁敏感信息
這條思路來源于Jacko
favicon哈希值
根據網站圖標哈希值搜索IP
Python2腳本
import mmh3
import requests
response = requests.get('https://example.com/favicon.ico')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print 'http.favicon.hash:'+str(hash)
去fofa或者shodan上搜索該哈希值
查詢格式:
- fofa:icon_hash="xxx"
- shodan:http.favicon.hash:xxx
HTML源代碼檢索查找IP
根據網站頁面HTML中特有的字符串去搜索引擎中搜索,如目標頁面中由HTML標簽為<title>的字段比較特殊,那么可以去FOFA中搜索:
title="xxxxxxxxxxxxxxx"
搜索到的結果會顯示IP,訪問該IP,若能夠正常訪問則為真正IP,如果打不開則為CDN或虛擬主機服務器
參考文章:
Jacko CDN
How to bypass the CDN to query the real IP of a website