原理解析
服務端請求僞造(SSRF)是指一種由攻擊者構造形成由服務端發起請求的一個安全漏洞,一般情況下,SSRF攻擊的目標都是從外網無法訪問的內部系統,藉助服務端發起僞造的請求,可以訪問到與它相連而與外網隔離的內部系統。
之所以會形成SSRF主要是因爲服務器提供了從其他服務器應用獲取數據的功能,但是沒有對目標服務器做過濾和限制。比如從指定URL地址獲取數據(引入css/js等數據時)。假設如下的一個web應用服務場景:
服務器A:web應用對外網服務接口
服務器B:保存一些圖片資源等等以供A網站請求。
當用戶訪問服務器A上的一些圖片時,服務器向服務器B請求對應的img,以返回用戶。
用戶向服務器A請求圖片的URL可能是www.A.com/getimg.php?Img=URL。
此時如果服務器A沒有對URL進行過濾的話,就導致攻擊者可以通過精心構造一個URL從而藉助A服務器請求到內部網絡B服務器的數據。
利用方式
- 對服務器所在內網或本地進行端口掃描,獲取服務器banner信息。
- 攻擊運行在內網或本地的應用程序
- 對內網web應用進行指紋識別
- 利用跨協議通信技術攻擊內網應用程序或web服務
- 利用file協議,dict協議,gropher協議,ftp協議等讀取本地文件
- 通過請其大文件進行Dos攻擊
防禦方式
- 過濾返回信息,驗證遠程服務器對請求的響應,對於返回給用戶的結果,在返回給用戶之前先檢查是否符合標準。
- 統一錯誤信息,避免用戶可以通過錯誤信息判斷服務器的端口狀態。
- 進行端口限制,將端口限制爲80,443等http常用端口
- 設立黑白名單限制內網IP
- 僅允許http/https協議,以防止類似file協議等導致的問題
我的個人博客,歡迎大家訪問 ~~~