概念web
Server-Side Request Forgery,服務器端請求僞造,一種由攻擊者構造造成服務器端發起請求的安全漏洞。通常攻擊目標是從外網沒法訪問的內部系統。redis
原理sql
服務端提供了從其餘服務器應用獲取數據的功能,而沒有對目標地址作過濾與限制,致使攻擊者能夠傳入任意的地址來讓後端服務器對其發起請求,並返回對該目標地址請求的數據後端
PHP下面函數使用不當形成SSRF:瀏覽器
·file_get_contents()安全
·fsockopen()服務器
·curl_exec() (支持不少協議,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP)dom
危害curl
• 能夠對外網服務器所在的內網、本地進行端口掃描,獲取一些服務的banner信息 。ide
• 攻擊運行在內網或者本地的應用程序。
• 對內網web應用進行指紋識別,經過訪問默認文件實現 。
• 攻擊內外網的web應用。主要是使用GET參數就可實現攻擊,如sql注入、struct二、redis等。
• 利用file協議讀取本地文件等
挖掘方法
一、WEB功能查找
a) 經過URL地址分享網頁內容
b) 轉碼服務:經過URL地址把原地址的網頁內容調優使其適合手機瀏覽
c) 在線翻譯:URL地址翻譯對應文本的內容。提供此功能的百度、有道等。
d) 圖片加載與下載
開發者爲了有更好的用戶體驗一般對圖片作些微小調整例如加水印、壓縮等,就必需要把圖片下載到服務器的本地,就可能形成SSRF問題
二、從URL關鍵字中尋找
·Share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain
三、通用的SSRF實例
• Weblogic配置不當,天生ssrf漏洞
• Discuz x2.5/x3.0/x3.1/x3.2 ssrf漏洞
漏洞驗證
http://www.douban.com/***/service?image=http://www.baidu.com/img/bd_l ogo1.png
1)咱們先驗證,請求是不是服務器端發出的,能夠右鍵圖片,使用新窗口打開圖片,若是瀏覽器上地址欄是http://www.baidu.com/img/bd_logo1.png,說明不存在SSRF漏洞。
2)能夠在Firebug 或者burpsuite抓包工具,查看請求數據包中是否包含 http://www.baidu.com/img/bd_logo1.png這個請求。因爲SSRF是服務端發起的請求,所以在加載這張圖片的時候本地瀏覽器中不該該存在圖片的請求。
3)在驗證完是由服務端發起的請求以後,此處就有可能存在SSRF,接下來須要驗證此URL是否能夠來請求對應的內網地址。首先咱們要獲取內網存在HTTP服務且存在favicon.ico文件地址,才能驗證是不是SSRF。
此處找內網地址能夠經過從漏洞平臺中的歷史漏洞尋找泄露的內網地址。
過濾繞過
@:
http://www.baidu.com@10.10.10.10與http://10.10.10.10 請求是相同的
IP地址轉換成十進制:
127.0.0.1=2130706433
xip.io
127.0.0.1.xip.io --127.0.0.1
www.127.0.0.1.xip.io --127.0.0.1
Haha.127.0.0.1.xip.io --127.0.0.1
Haha.xixi.127.0.0.1.xip.io --127.0.0.1
修復方案
1.統一錯誤信息,避免用戶能夠根據錯誤信息來判斷遠程服務器端口狀態
2.限制請求的端口爲HTTP經常使用的端口,好比 80,443,8080,8088等
3.黑名單內網IP。
4.禁用不須要的協議,僅僅容許HTTP和HTTPS.