2021 OWASP Top 10 A10伺服器請求偽造
伺服器請求偽造(SSRF )的問題是什麼?主要是在說目前當今的網頁應用程式,在取得外部遠端資源時,網址是可以透過使用者做操作的。
預防伺服器請求偽造問題可分成兩個面向
從網路層著手
- 將遠端功能切成不同子網路降低偽造伺服器請求的衝擊,也就是我們可以透過切割網路的部份去存取限制的一些作為。
- 在防火牆政策或是 ACL 的規則當中deny by default拒絕全部的外部的流量,的確是可以降低對外存取的狀況的流量。
從應用層
- 過濾、驗證使用者端所提供的輸入,可以透過程式去撰寫一個正向表列做過濾和驗證。
- 用正面表列的方式去列出 URL、 port 、目的地的清單。
- 不傳送原始的回應給使用者端,同時停用 HTTP 的重新導向。
- 留意網址的一致性,可以完全去防禦到 SSRF 的問題。
因為 SSRF 是一個相對空間很大的攻擊,攻擊者可以去修改 IP 之外,繞過防禦的方式也是相當多元,所以通常我們會希望不要透過黑名單或正規表示式去修好這個問題。
A10伺服器請求偽造攻擊情境的範例
情境一:對內部的伺服器做掃瞄連結埠的流程( port scan)
如果網路的架構沒有被切割,當內網是一個大內網的情況下,攻擊者可以透過這台主機的 SSRF 確認內部的主機到底有多少主機的埠號的開啟的情況。
情境二:機敏資料的洩漏
攻擊者可以透過相對應的 URL Schema存取本地端的檔案、內部服務的資料,也是說攻擊者透過 File的 Schema讀取主機上面的任意資料,同時SSRF 有一個回顯的動作,是可以直接讀取資料的。
情境三:讀取雲服務的 metadata storage
例如: 169.254.169.254的 metadata 的 URL 是可以直接被讀取的,通常發生於 AWS 或Google service 的情況,同時此情境也是多數目前 Bug Bounty 可能會發生的情況。
情境四:滲透內部服務
應用程式當中有 SSRF 的問題,攻擊者可以在裡面帶入攻擊參數,內部的弱點便會同步被曝露在外部的網路上,如 proxy 這樣子代理伺服器用途時,就可以對內部的主機做攻擊。
伺服器請求偽造弱點是非常新,相對是比較危險的攻擊,被OWASP作為十項當中的其中一項。