不安全的直接物件引用



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

讓我們藉助簡單的圖表瞭解此缺陷的威脅代理、攻擊媒介、安全弱點、技術影響和業務影響。

insecure direct obj ref

示例

應用程式在訪問帳戶資訊的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。以下是場景的快照。

1. insecure direct obj ref1

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

步驟3 - 我們需要遍歷當前目錄的所有路徑並從C:\驅動器導航。我們可以透過使用Burp Suite攔截流量來執行相同的操作。

2 insecure direct obj ref

步驟4 - 如果嘗試成功,它將顯示tomcat-users.xml,並顯示訊息“恭喜。您已成功完成本課程。”

2 insecure direct obj ref

預防機制

開發人員可以使用以下資源/要點作為指南,以在開發階段本身防止不安全的直接物件引用。

  • 開發人員應僅對間接物件引用使用一個使用者或會話。

  • 還建議在從不受信任的來源使用直接物件引用之前檢查訪問許可權。

廣告

© . All rights reserved.