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