先來解釋一下,SSRF,又叫做伺服器端請求偽造,大概就是攻擊者利用一些漏洞,讓伺服器去訪問一些不該訪問的地方。有時候,這些地方是公司內部的資源,那樣的話就可能會暴露出一些敏感資訊。
舉個例子,想像一下有個網購平台,這平台可以讓你查某商品在不同商店的庫存。然後這功能其實是透過後端的API來查的,所以當你想知道某商品庫存時,你的瀏覽器可能會送這樣的請求:
POST /product/stock HTTP/1.0
...
stockApi=http://stock.weliketoshop.net:8080/product/stock/check%3FproductId%3D6%26storeId%3D1
但是,如果伺服器不夠小心,那攻擊者就可能改這個URL,例如改成:
stockApi=http://localhost/admin
這樣的話,伺服器就可能會回傳/admin
這頁的內容給攻擊者看。雖然/admin
這頁一般來說只有管理員可以看,但因為請求來自伺服器自己,所以可能會被當作是「信任的請求」,結果就是攻擊者就可以看到不該看的內容了。
那要怎麼避免這樣的情況發生呢?其實方法還蠻多的,例如嚴格檢查輸入、使用安全列表、網路隔離和設定防火牆、要求密碼和身份驗證等等。總之,保護好自己的網站,不讓它成為攻擊者的目標,才是最重要的!