SSRF

SSRF(服務(wù)器端請求偽造)是一種由攻擊者構(gòu)造形成由服務(wù)端發(fā)起請求的一個安全漏洞。一般情況下,SSRF 攻擊的目標(biāo)是從外網(wǎng)無法訪問的內(nèi)部系統(tǒng)。(正是因為它是由服務(wù)端發(fā)起的,所以它能夠請求到與它相連而與外網(wǎng)隔離的內(nèi)部系統(tǒng))
如果攻擊者能夠?qū)rl參數(shù)更改為localhost,這可能允許他們查看服務(wù)器上托管的本地資源,從而使其容易受到服務(wù)器端請求偽造的攻擊。如果攻擊者可以控制服務(wù)器端請求的目的地,這將開啟一系列攻擊活動

危害
1.可以對外網(wǎng)、服務(wù)器所在內(nèi)網(wǎng)、本地進(jìn)行端口掃描,獲取一些服務(wù)的 banner 信息;
2.攻擊運行在內(nèi)網(wǎng)或本地的應(yīng)用程序(比如溢出);
3.對內(nèi)網(wǎng) web 應(yīng)用進(jìn)行指紋識別,通過訪問默認(rèn)文件實現(xiàn);
4.攻擊內(nèi)外網(wǎng)的 web 應(yīng)用,主要是使用 get 參數(shù)就可以實現(xiàn)的攻擊(比如 struts2,sqli 等);
5.利用 file 協(xié)議讀取本地文件等。

漏洞成因

SSRF 漏洞形成的原因主要是服務(wù)器端所提供的接口中包含了所要請求的內(nèi)容的 URL 參數(shù),并且未對客戶端所傳輸過來的 URL 參數(shù)進(jìn)行過濾。


漏洞判斷

可以發(fā)起對外請求,帶回數(shù)據(jù)

參數(shù)關(guān)鍵字
share、wap、url、link、src、source、
target、u、3g、display、sourceURl、imageURL、domain
常見的漏洞功能點
能夠?qū)ν獍l(fā)起網(wǎng)絡(luò)請求的地方
請求遠(yuǎn)程服務(wù)器資源的地方
數(shù)據(jù)庫內(nèi)置功能
郵件系統(tǒng)
文件處理
在線處理工具
eg:
在線識圖,在線文檔翻譯,分享,訂閱等,這些有的都會發(fā)起網(wǎng)絡(luò)請求。
根據(jù)遠(yuǎn)程URL上傳,靜態(tài)資源圖片等,這些會請求遠(yuǎn)程服務(wù)器的資源。
數(shù)據(jù)庫的比如mongodb的copyDatabase函數(shù),這點看豬豬俠講的吧,沒實踐過。
郵件系統(tǒng)就是接收郵件服務(wù)器地址這些地方。
文件就找ImageMagick,xml這些。
從URL關(guān)鍵字中尋找,比如:source,share,link,src,imageurl,target等

相關(guān)函數(shù)

1.file_get_contents()

讀取文件,并且能夠?qū)ν獍l(fā)起請求。
file_get_contents默認(rèn)不支持訪問https請求,如果要支持需配置php.ini文件,激活 php_openssl.dll模塊


2.fsockopen()

它是打開一個網(wǎng)絡(luò)連接,linux套接字連接。可以理解的就是肯定會對外發(fā)起一個請求,然后你會看到它的參數(shù),第1個host name,肯定是一個IP或者就是主機(jī)名,port就是個端口號。


3.curl_exec()

調(diào)用curl利用會有一些不同的地方,它支持協(xié)議非常多,也就意味著調(diào)動時刻能夠發(fā)起請求,而且能控制協(xié)議的話能做的事情將會變得非常多,將會極大的去擴(kuò)展攻擊面。


相關(guān)協(xié)議

利用協(xié)議收集信息及反彈shell。

1.Gopher協(xié)議

簡介:是Internet上一個非常有名的信息查找系統(tǒng),它將Internet上的文件組織成某種索引,很方便地將用戶從Internet的一處帶到另一處。
gopher協(xié)議是比http協(xié)議更早出現(xiàn)的協(xié)議,現(xiàn)在已經(jīng)不常用了,但是在SSRF漏洞利用中g(shù)opher可以說是萬金油,因為可以使用gopher發(fā)送各種格式的請求包,這樣便可以解決漏洞點不在GET參數(shù)的問題了。
可以先截獲get請求包和post請求包,再構(gòu)成符合gopher協(xié)議的請求,POST包中要注意Content-length,注意url編碼的次數(shù)。gopher協(xié)議是ssrf利用中最強大的協(xié)議。
gopher是一個互聯(lián)網(wǎng)上使用過的分布型的文件搜索獲取網(wǎng)絡(luò)協(xié)議。
使用格式
    基本協(xié)議格式:URL:gopher://<host>:<port>/<gopher-path> 。</gopher-path></port></host>
    gopher://xxxxxx:port/主體 主體部分需要進(jìn)行url編碼。
協(xié)議利用
 萬能協(xié)議(利用Gopher攻擊Redis、攻擊Fastcgi 等)。
是對目標(biāo)發(fā)起攻擊的主要協(xié)議:
*   利用此協(xié)議可以攻擊內(nèi)網(wǎng)的 `FTP、Telnet、Redis、Memcache`,也可以進(jìn)行 `GET、POST` 請求。這無疑極大拓寬了 SSRF 的攻擊面。
*   內(nèi)網(wǎng)中的redis存在未授權(quán)訪問漏洞,當(dāng)Redis服務(wù)以root 權(quán)限運行時,利用 Gopher 協(xié)議攻擊內(nèi)網(wǎng)中的 Redis,通過寫入定時任務(wù)可以實現(xiàn)反彈shell。
*   通過GOPHER我們在一個URL參數(shù)中構(gòu)造Post或者Get請求,從而達(dá)到攻擊內(nèi)網(wǎng)應(yīng)用的目的。
*   利用`Gopher` 協(xié)議還可以攻擊 `FastCGI`,攻擊內(nèi)網(wǎng) `Vulnerability Web`。
 通過gopher協(xié)議可以反彈shell。
*   利用gopher連接redis,執(zhí)行redis命令,將反彈shell的語句寫入cron,使得受害者主機(jī)主動向你的主機(jī)彈shell。(注:用gopher進(jìn)行發(fā)送的時候要對原語句進(jìn)行url編碼)。
 [利用 Gopher 協(xié)議拓展攻擊面](https://blog.chaitin.cn/gopher-attack-surfaces/)。有案例。
有發(fā)送POST包的案例。
通過gopher攻擊內(nèi)網(wǎng)數(shù)據(jù)庫案例。

2.dict協(xié)議

dict協(xié)議是一個字典服務(wù)器協(xié)議,A Dictionary Server Protocol,通常用于讓客戶端使用過程中能夠訪問更多的字典源,但是在SSRF中如果可以使用dict協(xié)議那么就可以輕易的獲取目標(biāo)服務(wù)器端口上運行的服務(wù)版本等信息。
該協(xié)議約定服務(wù)器端偵聽端口號:2628。

使用格式:?url=dict://

協(xié)議利用
    除了泄露安裝軟件版本信息,還可以查看端口,操作內(nèi)網(wǎng)redis服務(wù)等
        利用dict協(xié)議,dict://127.0.0.1:6379/info可獲取本地redis服務(wù)配置信息;
        利用dict://127.0.0.1:6379/KEYS *獲取 redis 存儲的內(nèi)容。
    探測端口操作,以及版本信息 diet: //xxxx:port/info;
    例:
    http://xxx.com/ssrf.php?url=dict://127.0.0.1:22。
    使用dict://協(xié)議進(jìn)行端口掃描(掃描內(nèi)網(wǎng)的機(jī)器的端口);
    ?url=dict://ip:port;
        當(dāng)訪問未開放端口,腳本會顯示空白或者報錯;
        當(dāng)訪問開放端口時,腳本會顯示banner 信息。
    協(xié)議也能攻擊redis不過不能換行,一次只能執(zhí)行一條命令。

3.FTP協(xié)議

只能探測是否存在ftp,不能進(jìn)行暴力破解

使用格式
?url=ftp://

4.HTTP協(xié)議

用來探測是否存在SSRF

使用格式
http://

協(xié)議利用
    訪問內(nèi)網(wǎng)資源;
    http://share.xxx.com/index.php?url=http://127.0.0.1;
    http://image.xxx.com/image.php?image=http://127.0.0.1。
    用來探測是否存在ssrf。

5.File協(xié)議

用來進(jìn)行任意文件讀取

使用格式
file://

協(xié)議利用
    通過file協(xié)議可以讀取主機(jī)內(nèi)任意文件。
        讀取用戶密碼、讀取配置文件和源代碼。
    http://xxx.com/ssrf.php?url=file:///etc/passwd。
        請求 http://192.168.163.150/test.php?url=file:///etc/passwd便可以獲取敏感文件的信息;

6.SFTP

即SSH,在計算機(jī)領(lǐng)域,SSH文件傳輸協(xié)議(英語:SSH File Transfer Protocol,也稱Secret File Transfer Protocol,中文:安全文件傳送協(xié)議,英文:Secure FTP或字母縮寫:SFTP)是一數(shù)據(jù)流連接,提供文件訪問、傳輸和管理功能的網(wǎng)絡(luò)傳輸協(xié)議。

使用格式
sftp://

7.TFTP

TFTP(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)是TCP/IP協(xié)議族中的一個用來在客戶機(jī)與服務(wù)器之間進(jìn)行簡單文件傳輸?shù)膮f(xié)議,提供不復(fù)雜、開銷不大的文件傳輸服務(wù)。端口號為69。

使用格式
tftp://

8.ldap

LDAP(Light Directory Access Portocol),它是基于X.500標(biāo)準(zhǔn)的輕量級目錄訪問協(xié)議。

對于不同語言實現(xiàn)的web系統(tǒng)可以使用的協(xié)議也存在不同的差異,其中:

php:
http、https、file、gopher、phar、dict、ftp、ssh、telnet...
java:
http、https、file、ftp、jar、netdoc、mailto...
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容