📜  不安全的直接对象引用

📅  最后修改于: 2020-12-04 05:20:17             🧑  作者: Mango


当开发人员公开对内部实现对象(例如文件,目录或数据库密钥)的引用而没有允许攻击者操纵这些引用以访问未授权数据的任何验证机制时,可能会发生直接对象引用。

让我们借助简单的图表了解此漏洞的威胁代理,攻击媒介,安全漏洞,技术影响和业务影响。

不安全的直接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.不安全的直接obj ref1

步骤2-文件的路径显示在“当前目录为”字段中-C:\ Users \ userName $ \。extract \ webapps \ WebGoat \ lesson_plans \ en,我们也知道tomcat-users.xml文件是放在C:\ xampp \ tomcat \ conf下

步骤3-我们需要遍历当前目录并从C:\ Drive导航。我们可以通过使用Burp Suite拦截流量来执行相同的操作。

2不安全的直接obj ref

步骤4-如果尝试成功,它将显示tomcat-users.xml,并显示消息“恭喜。您已成功完成本课”。

2不安全的直接obj ref

预防机制

开发人员可以使用以下资源/点作为指南,以防止在开发阶段本身中不安全的直接对象引用。

  • 开发人员应仅将一个用户或会话用于间接对象引用。

  • 还建议在使用来自不受信任来源的直接对象引用之前检查访问权限。