一、什么是SSRF?
SSRF(Server-Side Request Forgery:服務(wù)器端請求偽造) 是指攻擊者能夠從易受攻擊的Web應(yīng)用程序發(fā)送精心設(shè)計(jì)的請求的對其他網(wǎng)站進(jìn)行攻擊。
一般情況下,SSRF攻擊的目標(biāo)是從外網(wǎng)無法訪問的內(nèi)部系統(tǒng),也就是內(nèi)網(wǎng)。
利用一個(gè)可以發(fā)起網(wǎng)絡(luò)請求的服務(wù),當(dāng)做跳板來攻擊其它服務(wù)
二、SSRF成因
SSRF 形成的原因大都是由于服務(wù)端提供了從其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能且沒有對目標(biāo)地址做過濾與限制。ssrf是利用存在缺陷的web應(yīng)用作為代理去攻擊遠(yuǎn)程和本地的服務(wù)器。
也就是說,對于為服務(wù)器提供服務(wù)的其他應(yīng)用沒有對訪問進(jìn)行限制,如果我構(gòu)造好我的訪問包,那我就有可能利用目標(biāo)服務(wù)對他的其他服務(wù)器應(yīng)用進(jìn)行調(diào)用。
三、SSRF簡析
SSRF漏洞就是通過篡改獲取資源的請求發(fā)送給服務(wù)器;
但是服務(wù)器并沒有檢測這個(gè)請求是否合法的;
然后服務(wù)器以他的身份來訪問其他服務(wù)器的資源。
四、PHP存在SSRF的風(fēng)險(xiǎn)函數(shù)
以下函數(shù)可以通過網(wǎng)絡(luò)協(xié)議訪問目標(biāo)服務(wù)器上的資源:
-
file_get_ contents()
file_get_ contents函數(shù)可以讀取本地和遠(yuǎn)程的文件,支持多種協(xié)議,如ftp,http,https還可以讀取php源碼;
如:php://filter/read=convert.base64-encode/resource=ssrf.php,就可以將后臺(tái)當(dāng)前目錄下的ssrf.php文件的bs64編碼返回。 -
fsockopen()
fsockopen函數(shù)是文件指針 -
curl_exec()
curl_exec函數(shù)將訪問前端提交的url參數(shù)的網(wǎng)址。
五、后臺(tái)源碼獲取方式
- 網(wǎng)上尋找開源的源碼
- 利用漏洞攻擊,獲取源碼
六、SSRF危害
- 可以對服務(wù)器所在內(nèi)網(wǎng)、本地進(jìn)行端口掃描,獲取一些服務(wù)的信息等。例如:可以不斷嘗試對服務(wù)器的內(nèi)網(wǎng)端口進(jìn)行探測。
- 目標(biāo)網(wǎng)站本地敏感數(shù)據(jù)的讀取。例如:能讀取服務(wù)器根目錄下的敏感文件。
- 內(nèi)外網(wǎng)主機(jī)應(yīng)用程序漏洞的利用
- 內(nèi)外網(wǎng)Web站點(diǎn)漏洞的利用
七、SSRF漏洞挖掘
從WEB功能上尋找,
- 分享功能。網(wǎng)站能進(jìn)行超鏈接的標(biāo)題等內(nèi)容進(jìn)行顯示;
- 在線翻譯,例如:通過URL地址翻譯對應(yīng)文本的內(nèi)容;
- 圖片加載與下載。加載遠(yuǎn)程圖片地址此功能用到的地方很多,很大可能造成SSRF問題。例如:編輯器處,就會(huì)有遠(yuǎn)程文件加載。某些地方會(huì)進(jìn)行遠(yuǎn)程加載頭像。
- 轉(zhuǎn)碼服務(wù)。通過URL地址把原地址的網(wǎng)頁內(nèi)容調(diào)優(yōu)使其適合手機(jī)屏幕瀏覽。
- 未公開的API。API (應(yīng)用程序編程接口)實(shí)現(xiàn)以及其他調(diào)用URL的功能等。此處類似的功能有360提供的網(wǎng)站評分,以及有些網(wǎng)站通過應(yīng)用程序編程接口獲取遠(yuǎn)程地址文件來加載內(nèi)容。
SSRF通過遠(yuǎn)程加載來實(shí)現(xiàn)攻擊。
從URL關(guān)鍵字中尋找
在對功能上存在SSRF漏洞中URL地址特征的觀察,通過收集,大致有以下關(guān)鍵字:
如果利用google 語法加上這些關(guān)鍵字去尋找SSRF漏洞,耐心的驗(yàn)證,現(xiàn)在還是可以找到存在的SSRF漏洞。
一切要你輸入網(wǎng)址的地方和可以輸入ip的地方,都是ssrf的天下。
八、SSRF具體利用
ssrf常利用的相關(guān)協(xié)議
- http://:探測內(nèi)網(wǎng)主機(jī)存活、端口開放情況
- gopher://:發(fā)送GET或POST請求;攻擊內(nèi)網(wǎng)應(yīng)用
- dict://:泄露安裝軟件版本信息,查看端口,操作內(nèi)網(wǎng)遠(yuǎn)程訪問等
- file://:讀取本地文件
#使用方法
內(nèi)網(wǎng)訪問:
使用http協(xié)議對內(nèi)網(wǎng)的Web應(yīng)用進(jìn)行訪問?url=http://127.0.0.1/flag.php
PHP偽協(xié)議讀取文件
PHP支持的偽協(xié)議:
- file:// — 訪問本地文件系統(tǒng)
- http:// — 訪問 HTTP(s) 網(wǎng)址
- ftp:// — 訪問 FTP(s) URLs
- php:// — 訪問各個(gè)輸入/輸出流(I/O streams)
- zlib:// — 壓縮流
- data:// — 數(shù)據(jù)(RFC 2397)
- glob:// — 查找匹配的文件路徑模式
- phar:// — PHP 歸檔
- ssh2:// — Secure Shell 2
- rar:// — RAR
- ogg:// — 音頻流
- expect:// — 處理交互式的
在php.ini里有兩個(gè)重要的參數(shù)allow_url_fopen、allow_url_include。
allow_url_fopen:默認(rèn)值是ON。允許url里的封裝偽協(xié)議訪問文件;
allow_url_include:默認(rèn)值是OFF。不允許包含url里的封裝偽協(xié)議包含文件;
端口掃描
在SSRF中,dict協(xié)議與http協(xié)議可以用來探測內(nèi)網(wǎng)主機(jī)存活與端口開放情況。
例如:
?url=dict://127.0.0.1:8000
?url=http://127.0.0.1:8080
九、SSRF存在的必要條件
- 必須要有交互;
- 請求資源沒有做限制。
以下例子是不存在SSRF漏洞的,舉例:
http://www.douban.com/***/service?image=http://www.baidu.com/img/bd_logo1.png
假如通過抓包,發(fā)現(xiàn)服務(wù)器請求地址是:www.baidu.com
或者右鍵查看圖片的存放地址是:http://www.baidu.com/img/bd_logo1.png,這兩種情況,是不存在
SSRF漏洞的。
因?yàn)檎埱蟮牡刂范际莃aidu的服務(wù)器,而URL里面的拼接地址也是baidu的地址。SSRF存在的前提是A讓B幫忙訪問C,現(xiàn)在這相當(dāng)于是B發(fā)脾氣,直接告訴A,C在哪里,讓A直接訪問C,這樣子就不存在SSRF漏洞了。
十、SSRF防御
通常有一下 5 個(gè)思路:
- 過濾返回信息,驗(yàn)證遠(yuǎn)程服務(wù)器對請求的相應(yīng),是比較容易的方法。如果 Web 應(yīng)用獲取某種類型的文件,那么可以在把返回結(jié)果展示給用戶之前先驗(yàn)證返回信息是否符合標(biāo)準(zhǔn)。
- 統(tǒng)一錯(cuò)誤信息,避免用戶根據(jù)錯(cuò)誤信息來判斷遠(yuǎn)程服務(wù)器端口狀態(tài)。
- 限制請求的端口為 HTTP 常用端口,比如 80、443、8080、8090
- 黑名單內(nèi)網(wǎng) IP,避免應(yīng)用被用來獲取內(nèi)網(wǎng)數(shù)據(jù),攻擊內(nèi)網(wǎng)。
- 禁用不需要的協(xié)議。僅僅允許HTTP和HTTPS請求??梢苑乐诡愃朴趂ile://、ftp://等引起的問題
十一、SSRF繞過技巧
利用@符號(hào)
SSRF繞過中我們通常使用@符號(hào)進(jìn)行繞過
例如:http://example.com@127.0.0.1
添加端口號(hào)
SSRF繞過中我們通常使用添加端口號(hào)繞過
例如:http://127.0.0.1:8080
利用短地址
SSRF繞過中我們通常使用短地址進(jìn)行繞過,把目標(biāo)網(wǎng)頁變成短地址。
利用特殊域名
SSRF繞過中我們通常使用特殊域名進(jìn)行繞過
利用封閉式字母數(shù)字Enclosed Alphanumerics
例:? ?? ?? ?? .? ?? >>> example.com
清單:
①② ③ ④ ⑤ ⑥ ⑦⑧ ⑨ ⑩ ? ? ? ? ? ? ? ? ? ?
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ?
利用。繞過
SSRF繞過中我們通常使用。進(jìn)行繞過
例如:http://127。0。0。1
利用進(jìn)制轉(zhuǎn)換
把IP地址轉(zhuǎn)換成八進(jìn)制、二進(jìn)制、十六進(jìn)制
利用其它協(xié)議
Dict:// dict://<user-auth>@<host>:<port>/d:<word>
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
更加具體可以參考這個(gè)網(wǎng)頁:https://www.secpulse.com/archives/65832.html
這里給出一個(gè)大牛的腳本,可以很方便的探測ssrf的網(wǎng)段以及每個(gè)網(wǎng)段的端口,甚至還有反彈shell的功能:
地址: https://github.com/NoneNotNull/SSRFX
文章來源:http://www.zghlxwxcb.cn/news/detail-514820.html
十二、靶場參考
鏈接: pikache靶場通關(guān)——SSRF攻擊
鏈接: ctfhub靶場練習(xí)——SSRF攻擊文章來源地址http://www.zghlxwxcb.cn/news/detail-514820.html
到了這里,關(guān)于網(wǎng)絡(luò)安全進(jìn)階學(xué)習(xí)第四課——SSRF服務(wù)器請求偽造的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!