不安全的直接對象引用

當開發人員公開對內部實現對象(例如:檔,目錄或資料庫密鑰)的引用而沒有任何允許攻擊者操縱這些引用來訪問未授權數據的驗證機制時,可能會發生直接對象引用。

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

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

示例

該應用程式在訪問帳戶資訊的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.

預防機制

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

上一篇: 測試跨站點腳本(XSS) 下一篇: 安全配置錯誤