伺服器端請求偽造 Server Side Request Forgery

    SSRF是由駭客偽造中介伺服器請求的攻擊,因為外網無法連通內網,內網間的溝通容易使人信任,故這種攻擊很容易因為伺服器對中介伺服器的信任而成功。

    因B伺服器處於內網,開發者容易認為B伺服器始終安全而沒有對A伺服器的請求加以驗證,倘若A伺服器的驗證強度不足極有可能導致駭客修改API連結以偽造A伺服器的正常請求使其可以攻擊到位於內網的B伺服器。

    具體來說,假設有一學生想查詢自己的考試成績,查詢方式是由網站送出一個API請求(/Aapi/getscore/{studentid})至學校的中介伺服器A,A收到請求後使用url=”/Bapi/getscore/”+ studentid至B伺服器存取資料(/Bapi/getscore/{studentid}),其中B伺服器處於內網,外網無法連通。

    B伺服器另外具有一供內部人員取得學生資料的API(/Bapi/getprofile/{studentid}),若A對查詢成績API的studentid驗證不夠嚴格則駭客可以使用/Aapi/getscore/../getprofile/1讓A伺服器串接成/Bapi/ getscore /../getprofile/1,伺服器會解析成/Bapi/getscore/1,駭客即可在外網取得學生資料。

    由此可見,即使是處於內網的伺服器之間的請求最好也進行權限檢查、資料驗證。