一、SSRF定義
SSRF(Server-Side Request Forgery:服務(wù)器端請(qǐng)求偽造) 是指攻擊者能夠從易受攻擊
的Web應(yīng)用程序發(fā)送精心設(shè)計(jì)的請(qǐng)求的對(duì)其他網(wǎng)站進(jìn)行攻擊。
SSRF攻擊的目標(biāo)是從外網(wǎng)無(wú)法訪問(wèn)的內(nèi)部系統(tǒng)。利用一個(gè)可以發(fā)起網(wǎng)絡(luò)請(qǐng)求的服務(wù),當(dāng)做跳板來(lái)攻擊其它服務(wù)。簡(jiǎn)單來(lái)說(shuō)就是:A讓B幫忙訪問(wèn)C
二、形成原因
SSRF 形成的原因大都是由于服務(wù)端提供了從其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能且沒有對(duì)
目標(biāo)地址做過(guò)濾與限制。
1.提供請(qǐng)求功能
SSRF漏洞就是通過(guò)篡改獲取資源的請(qǐng)求發(fā)送給服務(wù)器,但是服務(wù)器并沒有檢測(cè)這個(gè)請(qǐng)求是否合法的,然后服務(wù)器以他的身份來(lái)訪問(wèn)其他服務(wù)器的資源 。
2.地址沒做限制
PHP中下面函數(shù)的使用不當(dāng)會(huì)導(dǎo)致SSRF
file_get_ contents函數(shù)可以讀取本地和遠(yuǎn)程的文件,支持多種協(xié)議,如ftp,http,https
還可以讀取php源碼
fsockopen()
curl_exec()可以訪問(wèn)前端提交的url網(wǎng)址
這些函數(shù)可以通過(guò)網(wǎng)絡(luò)協(xié)議訪問(wèn)目標(biāo)服務(wù)器上的資源
三、漏洞危害
1.可以對(duì)服務(wù)器所在內(nèi)網(wǎng)、本地進(jìn)行端口掃描,獲取一些服務(wù)的信息等
2.目標(biāo)網(wǎng)站本地敏感數(shù)據(jù)的讀取
3.內(nèi)外網(wǎng)主機(jī)應(yīng)用程序漏洞的利用
4.內(nèi)外網(wǎng)Web站點(diǎn)漏洞的利用
四、ssrf挖掘
1.從WEB功能上尋找
分享鏈接功能
獲取超鏈接的標(biāo)題等內(nèi)容進(jìn)行顯示
在線翻譯
給網(wǎng)址翻譯對(duì)應(yīng)網(wǎng)頁(yè)的內(nèi)容
圖片加載與下載
例如富文本編輯器中的點(diǎn)擊下載圖片到本地;通過(guò)URL地址加載或下載遠(yuǎn)程圖片
云服務(wù)廠商
它會(huì)遠(yuǎn)程執(zhí)行一些命令來(lái)判斷網(wǎng)站是否存活等,所以如果可以捕獲相應(yīng)的信息,就可以進(jìn)行ssrf測(cè)試
總之:SSRF通過(guò)遠(yuǎn)程加載來(lái)實(shí)現(xiàn)攻擊,一切要你輸入網(wǎng)址的地方和可以輸入ip的地方,都是ssrf的天下
2.從URL關(guān)鍵字中尋找
如:Share、wap、url、link、src、source、target、sourceURL、imageURL、domain
可以通過(guò)以上關(guān)鍵詞搜索到ssrf漏洞
五、ssrf利用實(shí)操
1.ssrf常利用的相關(guān)協(xié)議
http://:探測(cè)內(nèi)網(wǎng)主機(jī)存活、端口開放情況
gopher://:發(fā)送GET或POST請(qǐng)求;攻擊內(nèi)網(wǎng)應(yīng)用
dict://:泄露安裝軟件版本信息,查看端口,操作內(nèi)網(wǎng)遠(yuǎn)程訪問(wèn)等
file://:讀取本地文件
//實(shí)操
a.內(nèi)網(wǎng)訪問(wèn)
訪問(wèn)https://www.ctfhub.com/#/skilltree 選擇Web-SSRF-內(nèi)網(wǎng)訪問(wèn)
開啟題目后點(diǎn)擊出現(xiàn)的鏈接,并在鏈接后面拼接?url=http://127.0.0.1/flag.php即可獲得并將其作為flag提交
b.偽協(xié)議讀取文件
1)file://
用于訪問(wèn)本地文件系統(tǒng)。當(dāng)指定了一個(gè)相對(duì)路徑(不以/、、\或 Windows 盤符開頭的路徑)提供的路徑將基于當(dāng)前的工作目錄。
2)http://
訪問(wèn) HTTP(s) 網(wǎng)址,URL 形式,允許通過(guò) HTTP 1.0 的GET方法,只讀訪問(wèn)文件或資源,通常用于遠(yuǎn)程包含
3)ftp://
訪問(wèn) FTP(s) URLs
4)data://
數(shù)據(jù)(RFC 2397),數(shù)據(jù)流封裝器,以傳遞相應(yīng)格式的數(shù)據(jù)。通??梢杂脕?lái)執(zhí)行PHP代碼。
5)glob://
查找匹配的文件路徑模式
6)phar://與 zlib://
PHP壓縮流 歸檔
用于讀取壓縮文件,zip:// 、 bzip2:// 、 zlib:// 均屬于壓縮流,可以訪問(wèn)壓縮文件中的子文件,更重要的是不需要指定后綴名,可修改為任意后綴:jpg png gif xxx 等等。
7)ssh2://
Secure Shell 2
8)rar://
RAR
9)ogg://
音頻流
10)expect://
處理交互式的流
11)php://
訪問(wèn)各個(gè)輸入/輸出流(I/O streams)
php:// 用于訪問(wèn)各個(gè)輸入/輸出流(I/O streams),經(jīng)常使用的是php://filter和php://input,php://filter用于讀取源碼,php://input用于執(zhí)行php代碼。
① php://參數(shù)介紹
② php://filter用法
③ filter過(guò)濾器
字符串過(guò)濾器
string.rot13
等同于str_rot13(),rot13變換
string.toupper
等同于strtoupper(),轉(zhuǎn)大寫字母
string.tolower
等同于strtolower(),轉(zhuǎn)小寫字母
string.strip_tags
等同于strip_tags(),去除html、PHP語(yǔ)言標(biāo)簽
轉(zhuǎn)換過(guò)濾器
convert.base64-encode & convert.base64-decode
等同于base64_encode()和base64_decode(),base64編碼解碼
convert.quoted-printable-encode & convert.quoted-printable-decode
quoted-printable 字符串與 8-bit 字符串編碼解碼
壓縮過(guò)濾器
zlib.deflate & zlib.inflate
在本地文件系統(tǒng)中創(chuàng)建 gzip 兼容文件的方法,但不產(chǎn)生命令行工具如 gzip的頭和尾信息。只是壓縮和解壓數(shù)據(jù)流中的有效載荷部分。
bzip2.compress & bzip2.decompress
同上,在本地文件系統(tǒng)中創(chuàng)建 bz2 兼容文件的方法
加密過(guò)濾器
mcrypt.*
libmcrypt 對(duì)稱加密算法
mdecrypt.*
libmcrypt 對(duì)稱解密算法
12)偽協(xié)議利用例子
13)實(shí)操
訪問(wèn)https://www.ctfhub.com/#/skilltree 選擇Web-SSRF-偽協(xié)議讀取文件
在url后面拼接
url=file:///var/www/html/flag.php
然后bp抓包攔截
發(fā)送到重放,然后點(diǎn)send,可以看到flag了,復(fù)制提交即可
c.端口掃描
在SSRF中,dict協(xié)議與http協(xié)議可以用來(lái)探測(cè)內(nèi)網(wǎng)主機(jī)存活與端口開放情況。
訪問(wèn)https://www.ctfhub.com/#/skilltree 選擇Web-SSRF-端口掃描
端口范圍是8000-9000我們用bp爆破下找到可用端口
設(shè)置端口為參數(shù),并設(shè)置Numbers型payload,設(shè)置數(shù)值范圍和步長(zhǎng)
開始掃描
顯然只有8225可用
復(fù)制提交即可
d.外網(wǎng)訪問(wèn)
e.查看源碼(有問(wèn)題)
使用php偽協(xié)議查看ssrf.php源碼
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=php://filter/read=convert.base64-encode/resource=ssrf_curl.php
但是發(fā)現(xiàn)什么也沒出來(lái)(待查?)
六、SSRF驗(yàn)證方法
http://www.douban.com/***/service?image=http://www.baidu.com/img/bd_logo1.png
1.看鏈接
你可以直接右鍵圖片,在新窗口打開圖片,如果是瀏覽器上URL地址欄是
http://www.baidu.com/img/bd_logo1.png,說(shuō)明不存在SSRF漏洞。
排除法二:
2.看bp host
你可以使用burpsuite等抓包工具來(lái)判斷是否是SSRF,首先SSRF是由服務(wù)端發(fā)起的請(qǐng)求,因此在加載圖片的時(shí)候,是由服務(wù)端發(fā)起的,所以在我們本地瀏覽器的請(qǐng)求中就不應(yīng)該存在圖片的請(qǐng)求,如果刷新當(dāng)前頁(yè)面,有如下請(qǐng)求,則可判斷不是SSRF。(前提設(shè)置
burpsuite截?cái)鄨D片的請(qǐng)求,默認(rèn)是放行的)
七、ssrf防御方式
1.過(guò)濾返回信息
驗(yàn)證遠(yuǎn)程服務(wù)器對(duì)請(qǐng)求的相應(yīng),是比較容易的方法。如果 Web 應(yīng)用獲取某種類型的文件,那么可以在把返回結(jié)果展示給用戶之前先驗(yàn)證返回信息是否符合標(biāo)準(zhǔn)。
2.統(tǒng)一錯(cuò)誤信息
避免用戶根據(jù)錯(cuò)誤信息來(lái)判斷遠(yuǎn)程服務(wù)器端口狀態(tài)。
3.限制請(qǐng)求的端口
比如 80、443、8080、8090黑名單內(nèi)網(wǎng) IP避免應(yīng)用被用來(lái)獲取內(nèi)網(wǎng)數(shù)據(jù),攻擊內(nèi)網(wǎng)。
4.禁用不需要的協(xié)議
僅僅允許HTTP和HTTPS請(qǐng)求??梢苑乐诡愃朴趂ile://、ftp://等引起的問(wèn)題
八、ssrf繞過(guò)
1.利用@符號(hào)
例如:http://example.com@127.0.0.1
admin:pass@www.baidu.com
@之前的字符作為賬號(hào)登錄@之后的url,如上面用admin:pass作為www.baidu.com的登錄賬號(hào)
2.添加端口號(hào)
例如:http://127.0.0.1:8080
3.利用短地址
例如:http://dwz.cn/11SMa
4.利用特殊域名
例如:xip.io
5.利用封閉式字母數(shù)字Enclosed Alphanumerics
例:? ?? ?? ?? . ? ?? >>> example.com
6.利用進(jìn)制轉(zhuǎn)換
例如:http://2130706433/ //127.0.0.1
7.利用其它協(xié)議
Dict:// dict://@:/d:
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
8.繞過(guò)實(shí)操
a.URL Bypass
訪問(wèn)https://www.ctfhub.com/#/skilltree 選擇Web-SSRF-URL Bypass
需要訪問(wèn)http://notfound.ctfhub.com
使用@127.0.0.1繞過(guò)
此類需要某某開頭 某某結(jié)束的題目均可使用@進(jìn)行繞過(guò)
b.IP Bypass
訪問(wèn)https://www.ctfhub.com/#/skilltree 選擇Web-SSRF-數(shù)字IP Bypass
進(jìn)制繞過(guò),IP地址轉(zhuǎn)10進(jìn)制
c.302跳轉(zhuǎn)Bypass
訪問(wèn)https://www.ctfhub.com/#/skilltree 選擇Web-SSRF-302跳轉(zhuǎn) Bypass
直接訪問(wèn)會(huì)出錯(cuò)
使用特殊域名繞過(guò),如此處的localhost
d.BNS重綁定Bypass
訪問(wèn)https://www.ctfhub.com/#/skilltree 選擇Web-SSRF-BNS重綁定 Bypass
淺談DNS重綁定漏洞https://zhuanlan.zhihu.com/p/89426041
https://lock.cmpxchg8b.com/rebinder.html
使用上面這個(gè)網(wǎng)址獲取域名轉(zhuǎn)換,比如這里轉(zhuǎn)換127.0.0.1,得到
7f000001.c0a80001.rbndr.us
九、SSRF實(shí)操2
1.pikachu靶場(chǎng)
a.ssrf(curl)
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?page=ssrf.php#
點(diǎn)擊鏈接后
可以將url后面的鏈接改成其他鏈接
可以看出?url=是用于訪問(wèn)前端提交的url頁(yè)面的
b.ssrf(file_get_content)
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php
點(diǎn)擊鏈接
可以看出?file=是用于讀取本地或遠(yuǎn)程的文件
2.DVWA靶場(chǎng)
ssrf沒找到哦,在哪文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-497618.html
十、總結(jié)
1.在任何可以導(dǎo)入鏈接的地方都可以試試是否存在ssrf漏洞;
2.如果存在ssrf漏洞,那么看一看可不可以利用file協(xié)議,可以利用file協(xié)議讀取文件;
3.如果只能依靠返回信息,那么可以利用腳本來(lái)掃描內(nèi)網(wǎng)的存活主機(jī)和端口掃描,做一個(gè)內(nèi)
網(wǎng)的信息收集。如果掃描到一些能利用的端口漏洞,就可以利用服務(wù)器做跳板對(duì)其進(jìn)行利
用,比如redis服務(wù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-497618.html
到了這里,關(guān)于OWASP之SSRF服務(wù)器偽造請(qǐng)求的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!