Skip to content

垂直權限提升

什麼是垂直權限提升?

垂直權限提升(Vertical Privilege Escalation)是一種常見的網頁應用程式安全漏洞,它允許使用者獲得比原本授權更高的權限,從而存取和操作他們本不被允許的資源和功能。這種漏洞通常源於應用程式在處理使用者權限時的不當實作或設計缺陷。

在一個有層級劃分的使用者權限系統中,例如一般使用者、管理員和超級管理員,垂直權限提升發生於低權限使用者設法獲得高權限使用者的存取權。這意味著,一個原本只能執行有限操作的使用者,現在可以執行原本只有高權限使用者才能執行的敏感操作,如查看機密資料、修改系統設定、管理其他使用者帳號等。

垂直權限提升的原因多種多樣,以下是一些常見的情況:

  1. 不當的存取控制驗證:應用程式在執行敏感操作前,沒有適當地檢查使用者的權限。例如,一個管理員頁面沒有驗證使用者是否真的具有管理員權限,導致任何登入的使用者都可以存取。

  2. 不安全的直接物件參考:應用程式使用使用者提供的輸入來直接存取資源,而沒有進行權限驗證。例如,一個查看使用者資料的頁面,直接使用 URL 中的使用者 ID 參數來取得資料,攻擊者可以透過修改 ID 來存取其他使用者的資料。

  3. 權限驗證邏輯錯誤:應用程式的權限驗證邏輯存在缺陷,導致使用者可以繞過正常的權限檢查。例如,一個應用程式在檢查使用者權限時,只檢查了使用者是否登入,而沒有檢查使用者的具體權限。

  4. 錯誤的使用者權限管理:應用程式在管理使用者權限時出現錯誤,意外地將高權限授予低權限使用者。例如,管理員在修改使用者權限時,不小心將管理員權限授予一般使用者。

  5. 不安全的 Session 管理:應用程式的 Session 管理存在漏洞,允許使用者篡改或偽造 Session 資料,偽裝成高權限使用者。例如,如果 Session ID 是可預測的,攻擊者可以猜測出其他使用者的 Session ID,並劫持他們的 Session。

垂直權限提升的影響可以非常嚴重,取決於應用程式的性質和被提升的權限級別。在最壞的情況下,攻擊者可以獲得對整個應用程式的完全控制權,可以執行任何他們想執行的操作,如竊取機密資料、篡改資料、刪除資料、執行任意程式碼等。這可能導致巨大的財務損失、名譽損害,以及法律責任。

為了防止垂直權限提升,應用程式開發者需要遵循安全編碼的最佳實踐,如:

  1. 對所有敏感操作進行嚴格的權限驗證,確保只有授權的使用者才能執行。

  2. 避免直接使用使用者輸入來存取資源,而是使用間接的參考,如使用者 ID 到資源 ID 的映射。

  3. 徹底測試權限驗證邏輯,確保其正確性和完整性。

  4. 實施最小權限原則,只給予使用者執行其任務所需的最小權限。

  5. 定期審查和更新使用者權限,及時移除不必要的權限。

  6. 使用安全的 Session 管理機制,如使用隨機、唯一、不可預測的 Session ID,並在使用者登出或閒置時銷毀 Session。

總之,垂直權限提升是一個嚴重的安全問題,需要在應用程式的設計、開發和運維的各個階段予以重視和解決。只有透過全面的安全措施和持續的安全實踐,才能有效地防範這種威脅,保護使用者的資料和系統的安全。

網站常見攻擊手法

Cookie 是網站儲存在使用者瀏覽器中的一小段資料。它們主要用於維護使用者的登入狀態、個人化設定和追蹤使用者行為。當使用者訪問一個網站時,伺服器可以傳送一個 Cookie 到使用者的瀏覽器,瀏覽器會在後續的請求中將這個 Cookie 發送回伺服器。

在實現使用者認證和授權時,Cookie 通常扮演著關鍵的角色。許多網站使用 Cookie 來儲存使用者的登入資訊或 Session ID。當使用者登入成功後,伺服器會生成一個獨特的 Session ID,並將其儲存在 Cookie 中。在後續的請求中,伺服器可以透過 Cookie 中的 Session ID 來識別使用者,並根據使用者的身分和權限來決定是否允許請求。

然而,如果 Cookie 的處理和驗證機制存在漏洞,就可能被利用來實現垂直權限提升。以下是幾種可能的情況:

  1. 不安全的 Cookie 內容:如果網站將敏感資訊,如使用者權限級別,直接儲存在 Cookie 中,而沒有進行適當的加密或簽名,攻擊者就可以篡改 Cookie 的內容,將自己的權限提升到更高的級別。

  2. 不正確的 Cookie 驗證:如果網站在驗證 Cookie 時存在邏輯錯誤,如只檢查 Cookie 是否存在,而不檢查其內容的有效性,攻擊者就可以偽造一個合法的 Cookie,冒充高權限使用者。

  3. Cross-Site Scripting (XSS) 攻擊:如果網站存在 XSS 漏洞,攻擊者可以注入惡意的 JavaScript 程式碼,竊取其他使用者的 Cookie。如果被竊取的 Cookie 屬於高權限使用者,攻擊者就可以使用這個 Cookie 來獲得高權限。

  4. Cookie 過期時間過長:如果網站設置的 Cookie 過期時間過長,或者在使用者登出後沒有正確地銷毀 Cookie,攻擊者就有更多的時間和機會來竊取和利用 Cookie。

首先,你需要打開瀏覽器的開發者工具。在大多數瀏覽器中,你可以通過按下 F12 鍵或者在選單中選擇"開發者工具"來打開它。

接下來,在開發者工具中找到"Application"或者"Storage"標籤,在那裡你應該能看到一個名為"Cookies"的部分。展開它,你會看到當前網站儲存的所有 Cookie。

Cookie

現在,找到你想要修改的 Cookie。點擊它,你應該能在右側看到這個 Cookie 的詳細資訊,如它的名稱、值、網域、路徑、過期時間等。

cookie interface

要修改 Cookie 的值,你只需要雙擊"Value"欄位,然後輸入新的值。修改完成後,按下 Enter 鍵,瀏覽器就會儲存修改後的 Cookie。

如果你想添加一個新的 Cookie,可以點擊 Cookie 列表下方的 "+" 按鈕。然後輸入新 Cookie 的詳細資訊,如名稱、值、網域、路徑等,最後點擊"Done"按鈕。

如果你想刪除一個 Cookie,只需要在 Cookie 列表中選擇它,然後按下鍵盤上的 Delete 鍵,或者點擊 Cookie 詳情中的"Delete"按鈕。

修改完 Cookie 後,你可能需要重新載入網頁才能看到變化。你可以使用鍵盤上的 F5 鍵或者瀏覽器的重新載入按鈕來做到這一點。

如何防止這樣的攻擊?

為了防止 Cookie 被用於垂直權限提升,網站開發者應該遵循以下安全最佳實踐:

  1. 不要在 Cookie 中儲存敏感資訊,如使用者權限。如果必須儲存,也要進行適當的加密和簽名。

  2. 總是在伺服器端驗證 Cookie 的完整性和有效性,不要僅依賴客戶端的驗證。

  3. 實施嚴格的輸入驗證和輸出編碼,防止 XSS 攻擊。

  4. 設置合理的 Cookie 過期時間,並在使用者登出後立即銷毀 Cookie。

  5. 使用 HttpOnly 和 Secure 標誌來保護 Cookie,防止 JavaScript 存取和強制使用 HTTPS。

  6. 定期更換 Session ID,特別是在使用者的權限級別發生變化後。

透過這些措施,可以大大降低 Cookie 被用於垂直權限提升的風險,提高網站的整體安全性。