(Server-Side Request Forgery瓣喊,服務(wù)器端請(qǐng)求偽造):通俗的來(lái)說(shuō)就是我們可以偽造服務(wù)器端發(fā)起的請(qǐng)求坝锰,從而獲取客戶(hù)端所不能得到的數(shù)據(jù)瘫絮。SSRF漏洞形成的原因主要是服務(wù)器端所提供的接口中包含了所要請(qǐng)求的內(nèi)容的URL參數(shù)宾添,并且未對(duì)客戶(hù)端所傳輸過(guò)來(lái)的URL參數(shù)進(jìn)行過(guò)濾。這個(gè)漏洞造成的危害有:
(1)担敌、可以對(duì)外網(wǎng)摔敛、服務(wù)器所在內(nèi)網(wǎng)、本地進(jìn)行端口掃描全封,獲取一些服務(wù)的banner信息;
(2)马昙、攻擊運(yùn)行在內(nèi)網(wǎng)或本地的應(yīng)用程序(比如溢出);
(3)桃犬、對(duì)內(nèi)網(wǎng)Web應(yīng)用進(jìn)行指紋識(shí)別,通過(guò)訪問(wèn)默認(rèn)文件實(shí)現(xiàn);
(4)行楞、攻擊內(nèi)外網(wǎng)的Web應(yīng)用攒暇,主要是使用Get參數(shù)就可以實(shí)現(xiàn)的攻擊(比如Struts2漏洞利用,SQL注入等);
(5)子房、利用File協(xié)議讀取本地文件形用。
我的你理解是,在web程序中用如果使用URL作為參數(shù)并且這個(gè)URL可以被客戶(hù)端修改证杭,然后這個(gè)server端通過(guò)訪問(wèn)這個(gè)URL獲取對(duì)應(yīng)的數(shù)據(jù)田度,并且返回。如果是一張正常的圖片解愤,一切ok镇饺。如果是填一個(gè)這樣的URL呢?(http://127.0.0.1:22)那么服務(wù)端可能會(huì)返回banner信息送讲。有點(diǎn)像命令執(zhí)行漏洞但是奸笤,ssrf只是訪問(wèn)一個(gè)地址。
二哼鬓、繞過(guò)SSRF過(guò)濾的幾種方法
1监右、更改IP地址寫(xiě)法****
****因?yàn)榭赡芡ㄟ^(guò)過(guò)濾掉內(nèi)網(wǎng)IP的方式。****
可以通過(guò)進(jìn)制繞過(guò):
192.168.0.1的各種進(jìn)制
(1)异希、8進(jìn)制格式:0300.0250.0.1
(2)健盒、16進(jìn)制格式:0xC0.0xA8.0.1
(3)、10進(jìn)制整數(shù)格式:3232235521
(4)宠互、16進(jìn)制整數(shù)格式:0xC0A80001
2****味榛、利用解析****URL****所出現(xiàn)的問(wèn)題
在某些情況下,后端程序可能會(huì)對(duì)訪問(wèn)的URL進(jìn)行解析予跌,對(duì)解析出來(lái)的host地址進(jìn)行過(guò)濾。這時(shí)候可能會(huì)出現(xiàn)對(duì)URL參數(shù)解析不當(dāng)善茎,導(dǎo)致可以繞過(guò)過(guò)濾券册。
http://www.baidu.com@192.168.0.1/
當(dāng)后端程序通過(guò)不正確的正則表達(dá)式(比如將http之后到com為止的字符內(nèi)容,也就是www.baidu.com垂涯,認(rèn)為是訪問(wèn)請(qǐng)求的host地址時(shí))對(duì)上述URL的內(nèi)容進(jìn)行解析的時(shí)候烁焙,很有可能會(huì)認(rèn)為訪問(wèn)URL的host為www.baidu.com,而實(shí)際上這個(gè)URL所請(qǐng)求的內(nèi)容都是192.168.0.1上的內(nèi)容耕赘。
3****骄蝇、利用DNS解析。
在網(wǎng)絡(luò)上存在一個(gè)很神奇的服務(wù)操骡,http://xip.io當(dāng)我們?cè)L問(wèn)這個(gè)網(wǎng)站的子域名的時(shí)候九火,例如192.168.0.1.xip.io赚窃,就會(huì)自動(dòng)重定向到192.168.0.1。
4****岔激、通過(guò)各種非****HTTP****協(xié)議
(1)勒极、GOPHER協(xié)議:通過(guò)GOPHER我們?cè)谝粋€(gè)URL參數(shù)中構(gòu)造Post或者Get請(qǐng)求,從而達(dá)到攻擊內(nèi)網(wǎng)應(yīng)用的目的虑鼎。例如我們可以使用GOPHER協(xié)議對(duì)與內(nèi)網(wǎng)的Redis服務(wù)進(jìn)行攻擊.
(2)辱匿、File協(xié)議:File協(xié)議主要用于訪問(wèn)本地計(jì)算機(jī)中的文件,我們可以通過(guò)類(lèi)似file:///文件路徑這種格式來(lái)訪問(wèn)計(jì)算機(jī)本地文件炫彩。使用file協(xié)議可以避免服務(wù)端程序?qū)τ谒L問(wèn)的IP進(jìn)行的過(guò)濾匾七。例如我們可以通過(guò)file:///d:/1.txt 來(lái)訪問(wèn)D盤(pán)中1.txt的內(nèi)容
Request:file:///C:/Windows/win.ini
****5****、****DNS Rebinding****
對(duì)于用戶(hù)請(qǐng)求的URL參數(shù)江兢,首先服務(wù)器端會(huì)對(duì)其進(jìn)行DNS解析昨忆,然后對(duì)于DNS服務(wù)器返回的IP地址進(jìn)行判斷,如果在黑名單中划址,就pass掉扔嵌。
但是在整個(gè)過(guò)程中,第一次去請(qǐng)求DNS服務(wù)進(jìn)行域名解析到第二次服務(wù)端去請(qǐng)求URL之間存在一個(gè)時(shí)間查夺颤,利用這個(gè)時(shí)間差痢缎,我們可以進(jìn)行DNS 重綁定攻擊。
要完成DNS重綁定攻擊世澜,我們需要一個(gè)域名独旷,并且將這個(gè)域名的解析指定到我們自己的DNS Server,在我們的可控的DNS Server上編寫(xiě)解析服務(wù)寥裂,設(shè)置TTL時(shí)間為0嵌洼。這樣就可以進(jìn)行攻擊了,完整的攻擊流程為:
(1)封恰、服務(wù)器端獲得URL參數(shù)麻养,進(jìn)行第一次DNS解析,獲得了一個(gè)非內(nèi)網(wǎng)的IP
(2)诺舔、對(duì)于獲得的IP進(jìn)行判斷鳖昌,發(fā)現(xiàn)為非黑名單IP,則通過(guò)驗(yàn)證
(3)低飒、服務(wù)器端對(duì)于URL進(jìn)行訪問(wèn)许昨,由于DNS服務(wù)器設(shè)置的TTL為0,所以再次進(jìn)行DNS解析褥赊,這一次DNS服務(wù)器返回的是內(nèi)網(wǎng)地址糕档。
(4)、由于已經(jīng)繞過(guò)驗(yàn)證拌喉,所以服務(wù)器端返回訪問(wèn)內(nèi)網(wǎng)資源的結(jié)果速那。
轉(zhuǎn)至 http://www.reibang.com/p/612c010e588e