SSRF的原理和防范


背景

最近做的安全測評主要是SSRF,發現自己在這一塊有挺大知識盲點,抓緊補一下。

1.介紹

  • SSRF(Server-Side Request Forgery:服務器端請求偽造),是一種攻擊者利用服務端發起請求的安全漏洞。攻擊者能夠誘使服務端應用程序向攻擊者選擇的域發出HTTP請求。

  • SSRF針對的目標通常是從外部無法訪問的內網系統。正因為它是由服務端發起的,所以它能請求到與它相通而與外部隔離的內網系統,可被用於作為代理來實施內網(或者遠程服務器)的攻擊。

2.成因

  • 大都是由於服務端提供了從其他服務器應用獲取數據的功能,而沒有對目標地址進行嚴格過濾與限制,一旦被發現,攻擊者可以構造惡意請求實施攻擊。

3.危害與防范

3.1 危害

  • 成功的SSRF攻擊常用會導致黑客在易受攻擊的應用程序本身或應用程序與之通信的其他后端系統執行未授權(惡意)操作,和對組織內數據的訪問。特殊情況下,SSRF漏洞可能允許攻擊者執行任意命令。
  • SSRF可能的攻擊方式和危害如下:
    1. 讓服務端去訪問內網的一些WEB應用指紋文件來判斷是否存在相應的CMS,從而收集內網CMS信息
    2. 可以使用file、dict、gopher、ftp協議進行請求訪問相應的文件,可能造成文件任意讀取,導致敏感信息泄漏
    3. 攻擊內網web應用,可以向內部任意主機的任意端口發送精心構造的數據包,如果應用本身存在漏洞,可能造成遠程命令執行
    4. 攻擊內網應用程序(利用跨協議通信技術)
    5. 內網端口掃描,通過訪問看是否有端口開放,從而獲取內網端口開放信息
    6. 拒絕服務攻擊,請求大文件,始終保持鏈接keep-alive alway,導致拒絕服務

3.2 防范

  • 禁止服務端跳轉,防止以跳轉方式繞過HTTP協議限制
  • 對於SSRF,回顯是能夠成功利用的重要條件,所以過濾返回信息,驗證遠程服務器對請求的響應是比較容易的方法。如果WEB應用是去獲取某一種類型的文件,那么在把返回結果展示給用戶之前先驗證返回的信息是否符合標准。
  • 禁用不需要的協議,僅僅允許HTTP和HTTPS請求。可以防止類似於file://gopher://ftp://等引起的問題
  • 設置URL白名單或者限制內網IP,避免應用被用來獲取內網數據,攻擊內網
  • 限制請求的端口為HTTP常用的端口,例如80、443、8080、8090
  • 統一錯誤信息,避免用戶可以根據錯誤信息來判斷遠端服務器的端口狀態


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM