不安全对象的引用

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

在简单的图表的帮助下,让我们了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响.

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( );

攻击者在其浏览器中修改查询参数以指向管理员.

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

Hands ON

第1步登录Webgoat并导航到访问控制缺陷部分.目标是通过导航到它所在的路径来检索tomcat-users.xml.下面是该场景的快照.

1.insecure direct obj ref1

第2步该文件的路径显示在"当前目录是"字段中 -  C:\Users\userName $ \.extract\webapps\WebGoat\lesson_plans \我们也知道tomcat-users .xml文件保存在C:\ xampp \ tomcat \ conf

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

2 insecure direct obj ref

第4步如果尝试成功,它将显示tomcat-users.xml,并显示消息"祝贺您.您已成功完成本课程."

2不安全的直接对象

预防机制

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

  • 开发人员应该只使用一个用户或会话进行间接对象引用.

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