不安全的直接物件參照


當開發人員公開對內部實現物件(例如:檔案,目錄或資料庫金鑰)的參照而沒有任何允許攻擊者操縱這些參照來存取未授權資料的驗證機制時,可能會發生直接物件參照。

通過下面每項來了解這個漏洞的威脅代理,攻擊向量,安全弱點,技術影響和業務影響。

  • 威脅代理 - 任何只能部分存取某些型別系統資料的使用者。
  • 攻擊者的方法 - 攻擊者是一個授權系統使用者,只需將直接參照系統物件的引數值更改為使用者未授權的另一個物件。
  • 安全弱點 - 應用程式並不總是驗證使用者是否已獲得目標物件的授權。這導致不安全的直接物件參照缺陷。
  • 如何發現缺陷 - 測試人員可以檢測到此類缺陷,並快速顯示程式碼分析是否正確驗證了授權。
  • 技術影響 - 可以破壞引數參照的所有資料。
  • 業務影響 - 公眾暴露漏洞對業務的影響。

範例

該應用程式在存取帳戶資訊的SQL呼叫中使用未驗證的資料。

String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );

攻擊者在其瀏覽器中修改查詢引數以指向Admin

http://webapp.com/app/accountInfo?acct=admin

動手實踐

第1步 - 登入Webgoat並導航到存取控制缺陷部分。目標是通過導航到它所在的路徑來檢索tomcat-users.xml。以下是該場景的快照。

第2步 - 檔案的路徑顯示在’當前目錄是’欄位 - C:\Users\userName$\.extract\webapps\WebGoat\lesson_plans\en中我們也知道tomcat-users.xml檔案是儲存在C:\xampp\tomcat\conf下。

第3步 - 需要遍歷當前目錄並從C:/Drive導航。可以通過使用Burp Suite攔截流量來執行相同的操作。

第4步 - 如果嘗試成功,它將顯示tomcat-users.xml,並顯示訊息Congratulations. You have successfully completed this lesson.

預防機制

  • 開發人員可以使用以下資源/點作為指導,以防止在開發階段本身引入不安全的直接物件。
  • 開發人員應僅使用一個使用者或對談進行間接物件參照。
  • 還建議在使用來自不受信任來源的直接物件參照之前檢查存取許可權。