概念
SSRF(Server-Side Request Forgery),服務器端請求偽造,利用漏洞偽造服務器端發起請求,從而突破客戶端獲取不到數據的限制
對外發起網絡請求的地方都可能存在SSRF漏洞
危害
- 1、可以對外網、服務器所在內網、本地進行端口掃描,獲取一些服務的banner信息
- 2、攻擊運行在內網或本地的應用程序(比如溢出)
- 3、對內網Web應用進行指紋識別,通過訪問默認文件實現
- 4、攻擊內外網的Web應用,主要是使用Get參數就可以實現的攻擊(比如Struts2漏洞利用,SQL注入等)
- 5、利用file協議讀取文件
漏洞挖掘與判斷
- 從WEB功能上尋找
- 分享:通過URL地址分享網頁內容
- 轉碼服務:通過URL地址吧原地址的網頁內容調優使其適合手機屏幕瀏覽
- 在線翻譯:通過URL地址翻譯對應文本的內容。
- 圖片加載與下載:通過URL地址加載或下載圖片
- 未公開的api實現以及其他調用URL的功能
- 從URL關鍵字中尋找
- share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain
- 基本判斷
- 回顯
- 直接觀察
- 抓包
- 用vps監聽
- 延時
- DNS請求
- 回顯
相關函數
-
file_get_contents

-
fsockopen

-
curl_exec

bypass
misc
- 添加端口
例如:192.168.200.9:80 - 短網址
利用302跳轉到目標網址 - 指向任意IP的域名xip.io
例如:10.0.0.1.xip.io resolves to 10.0.0.1 - IP限制繞過
- 十進制
- 八進制
- 十六進制
- 不同進制組合轉換
- 302跳轉
- 結合
dict://、file://、gopher://
-file://同file:/,file: / http://A.com@10.10.10.10
相當於以http://A.com的身份訪問10.10.10.10http://A.com?xxx=xx
后跟無用參數繞過
cURL/parse_url解析差異、DNS重綁定、0三種繞過方式及例題
CRLF注入

Gopher協議
gopher是一個互聯網上使用過的分布型的文件搜索獲取網絡協議
gopher協議支持發出GET、POST請求:可以先截獲get請求包和post請求包,再構成符合gopher協議的請求,POST包中要注意Content-length,注意url編碼的次數。gopher協議是ssrf利用中最強大的協議
利用 Gopher 協議拓展攻擊面
使用限制

(圖片來源見水印)
- phpinfo中查看curl支持的協議
- 數據庫無密碼
構造payload
https://github.com/tarunkant/Gopherus
https://github.com/swisskyrepo/SSRFmap
