這段時間一直劃水來著谆级,突然看到SSRF漏洞钝凶,覺得新奇串塑,我只知道csrf魄眉,SSRF是什么東西,還能穿透防火墻展蒂、主機信息收集赚窃、端口開放情況看到這些我準備一探究竟,參考一篇大佬文章佃却,覺得博主挺好推薦給你們薄榛。
SSRF的原理與危害
SSRF(Server-Side Request Forgery)服務(wù)端請求偽造 是一種由攻擊者構(gòu)造形成由服務(wù)端發(fā)起請求的一個安全漏洞讳窟。一般情況下,SSRF攻擊的目標是從外網(wǎng)無法訪問的內(nèi)部系統(tǒng)敞恋。正是因為它是由服務(wù)端發(fā)起的丽啡,所以它能夠請求到與它相連而與外網(wǎng)隔離的內(nèi)部系統(tǒng)。
??正常情況下耳舅,我們無法從外網(wǎng)去訪問一個公司的內(nèi)部系統(tǒng)碌上,但是如果服務(wù)端提供了從其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能且沒有對目標地址做過濾與限制倚评。比如從指定URL地址獲取網(wǎng)頁文本內(nèi)容浦徊,加載指定地址的圖片,下載等等天梧。攻擊者就可以利用該漏洞繞過防火墻等訪問限制盔性,進而將受感染或存在漏洞的服務(wù)器作為代理進行端口掃描,甚至是訪問內(nèi)部系統(tǒng)數(shù)據(jù)呢岗。
SSRF攻擊利用主要有以下幾種方式
1冕香、內(nèi)網(wǎng)蛹尝、本地端口掃描,獲取開放端口信息
2悉尾、主機信息收集突那,web應(yīng)用指紋識別,獲取服務(wù)banner信息
3构眯、根據(jù)識別出的應(yīng)用針對性的發(fā)送payload攻擊愕难,例如struts2
4、攻擊內(nèi)網(wǎng)和本地的應(yīng)用程序及服務(wù)惫霸。
5猫缭、穿越防火墻
6、利用file協(xié)議讀取本地文件壹店,比如file:///etc/passwd
代碼演示示例
以下是一個用curl獲取數(shù)據(jù)的功能
<?php
/*
文件名稱:ssrf.php
curl_setopt函數(shù)說明:http://www.runoob.com/php/func-curl_setopt.html
*/
if(isset($_POST['url'])){
$link = $_POST['url'];
$filename = 'D:xampphtdocstestuploadtxt'.rand().'.txt';
$curlobj = curl_init($link);
$fp = fopen($filename,"w");
curl_setopt($curlobj,CURLOPT_FILE,$fp);
curl_setopt($curlobj,CURLOPT_HEADER,0);
curl_exec($curlobj);
curl_close($curlobj);
fclose($fp);
$fp = fopen($filename,"r");
$result = fread($fp,filesize($filename));
fclose($fp);
echo $result;
}
?>
<!DOCTYPE html>
<!-- 文件名:ssrf.html -->
<html>
<head>
<title>ssrf</title>
</head>
<body>
<center>
<form name="input" action="http://localhost/test/ssrf.php" method="POST">
<input type="text" name="url">
<input type="submit" value="Submit">
</form>
</center>
</body>
</html>
攻擊案例
1猜丹、讀取本地文件
file:///C:/Windows/win.ini(Linux下讀取/etc/passwd)
2、 請求非http服務(wù)的開放端口硅卢,返回banner信息
request:http://ip:22/1.txt
3射窒、服務(wù)探測
紅色標注IP主機B與本機A在同一內(nèi)網(wǎng)下
submit提交之后
主機B本來只有內(nèi)網(wǎng)可以訪問,但是由于curl請求資源的代碼存在漏洞将塑,導(dǎo)致對外網(wǎng)開放的主機A可以直接請求處于同一內(nèi)網(wǎng)主機B的資源轮洋,導(dǎo)致內(nèi)網(wǎng)應(yīng)用服務(wù)探測。
SSRF挖掘和防御
ssrf漏洞一般存在于以下幾種web功能:
1抬旺、在線分享:通過URL地址分享網(wǎng)頁內(nèi)容
2弊予、在線識圖
3、在線翻譯:百度翻譯开财,有道翻譯
4汉柒、各大網(wǎng)站訂閱
5、圖片加載與下載:通過URL地址加載或下載圖片
6责鳍、圖片碾褂、文章收藏功能
7、接收郵件服務(wù)器地址的郵件系統(tǒng)
8历葛、調(diào)用URL的功能
9正塌、文件處理,如ImageMagick恤溶,xml
10乓诽、請求遠程服務(wù)器資源,遠程URL上傳咒程,靜態(tài)資源圖片文件等
11鸠天、數(shù)據(jù)庫內(nèi)置功能,比如mongodb的copyDatabase函數(shù)
12帐姻、從URL關(guān)鍵字中尋找:share稠集,url奶段,link,src剥纷,source痹籍,target,sourceURl晦鞋,imageURL词裤,domain...
漏洞驗證的方式:
1、右鍵圖片在新窗口打開鳖宾,如果瀏覽器地址顯示為 www.xxx.com/xx.jpg 類似格式的吼砂,說明不存在ssrf漏洞,但是如果資源地址類似 http://www.xxx.com/1.jsp?image= 的格式就有可能存在漏洞鼎文。
2渔肩、另一種方式是使用抓包工具burp fiddler來判斷,SSRF漏洞是構(gòu)造服務(wù)器發(fā)送請求的安全漏洞拇惋,所以就可以通過抓包分析請求是否有服務(wù)端發(fā)起的來判斷是否存在漏洞周偎。
下圖轉(zhuǎn)自土司:
防御措施
過濾返回的信息,甚至必要情況下不返回
限制http端口撑帖,僅可使用http https
檢查IP是否為內(nèi)網(wǎng)IP蓉坎,進行黑名單過濾
禁止不需要的協(xié)議,gopher,ftp,file協(xié)議等
前言:總結(jié)了一些常見的姿勢胡嘿,以PHP為例蛉艾,先上一張腦圖,劃√的是本文接下來實際操作的