網(wǎng)站建設(shè)端口品牌推廣專(zhuān)員
一、SSRF漏洞原理
漏洞概述
SSRF(Server-side Request Forge,服務(wù)端請(qǐng)求偽造)是一種由攻擊者構(gòu)造形成由服務(wù)端發(fā)起請(qǐng)求的安全漏洞。一般情況下,SSRF攻擊的目標(biāo)是從外網(wǎng)無(wú)法訪問(wèn)的內(nèi)部系統(tǒng)。正是因?yàn)樗怯?span id="vxwlu0yf4" class="kdocs-bold" style="font-weight:bold;">服務(wù)端發(fā)起的,所以它能夠請(qǐng)求到與它相連而與外網(wǎng)隔離的內(nèi)部系統(tǒng)。
存在漏洞的位置:
1.分享:通過(guò)URL地址分享網(wǎng)頁(yè)內(nèi)容
2.轉(zhuǎn)碼服務(wù)
3.在線翻譯
4.圖片加載與下載:通過(guò)URL地址加載或下載圖片
5.圖片、文章收藏功能
6.未公開(kāi)的api實(shí)現(xiàn)以及其他調(diào)用URL的功能
7.從URL關(guān)鍵字中尋找

相關(guān)危險(xiǎn)函數(shù)
SSRF涉及到的危險(xiǎn)函數(shù)主要是網(wǎng)絡(luò)訪問(wèn),支持偽協(xié)議的網(wǎng)絡(luò)讀取的函數(shù)以PHP為例,涉及到的函數(shù)有
1.file_get_contents()—file_get_contents是把文件寫(xiě)入字符串,當(dāng)把url是內(nèi)網(wǎng)文件的時(shí)候,會(huì)先去把這個(gè)文件的內(nèi)容讀出來(lái)再寫(xiě)入,導(dǎo)致了文件讀取
2.fsockopen()——fsockopen是打開(kāi)一個(gè)網(wǎng)絡(luò)連接或者Unix套接字連接
3.curl_exec()——利用方式很多,最常見(jiàn)的是通過(guò)file、dict、gopher這三個(gè)協(xié)議來(lái)進(jìn)行滲透
4.curl()
5.fopen()——打開(kāi)一個(gè)文件文件或者 URL。
6.readfile()——輸出一個(gè)文件的內(nèi)容。與file_get_contents相似
舉例(以百度識(shí)圖為例)
用戶(hù)可以從本地或者URL的方式獲取圖片資源,交給百度識(shí)圖處理。如果提交的是URL地址,該應(yīng)用就會(huì)通過(guò)URL尋找圖片資源。
Web應(yīng)用開(kāi)放了類(lèi)似于百度識(shí)圖這樣的功能,并且對(duì)用戶(hù)提供的URL和遠(yuǎn)端服務(wù)器返回的信息沒(méi)有進(jìn)行合適的驗(yàn)證或者過(guò)濾,就可能存在“請(qǐng)求偽造”的缺陷

二、SSRF漏洞危害
端口掃描
內(nèi)網(wǎng)Web應(yīng)用指紋識(shí)別
攻擊內(nèi)網(wǎng)Web應(yīng)用
三、SSRF漏洞防御與修復(fù)
禁止302跳轉(zhuǎn),或者每跳轉(zhuǎn)一次都進(jìn)行校驗(yàn)?zāi)康牡刂肥欠駷閮?nèi)網(wǎng)地址或合法地址。
過(guò)濾返回信息,驗(yàn)證遠(yuǎn)程服務(wù)器對(duì)請(qǐng)求的返回結(jié)果,是否合法。
禁用高危協(xié)議,例如:gopher、dict、ftp、file等,只允許http/https
設(shè)置URL白名單或者限制內(nèi)網(wǎng)IP
限制請(qǐng)求的端口為http的常用端口,只允許訪問(wèn)HTTP和HTTPS的請(qǐng)求或者根據(jù)業(yè)務(wù)需要治開(kāi)放遠(yuǎn)程調(diào)用服務(wù)的端口
catch錯(cuò)誤信息,做統(tǒng)一錯(cuò)誤信息,避免黑客通過(guò)錯(cuò)誤信息判斷端口對(duì)應(yīng)的服務(wù)