Featured image of post IDOR-1

IDOR-1

IDOR-1

IDOR基础

什么是IDOR

IDOR( Insecure Direct Object Reference) 代表不安全的直接对象引用,是一种访问控制漏洞。

当 Web 服务器收到用户提供的输入以检索对象(文件、数据、文档),对输入数据给予了太多信任,并且未在服务器端对其进行验证以确认所请求的对象属于请求它的用户时,就会发生这种类型的漏洞。

示例

假设您刚刚注册了一项在线服务,并且想要更改您的个人资料信息。您单击的链接将转到 http://online-service.thm/profile?user_id=1305,您可以看到您的信息。

好奇心让您尝试将 user_id 值更改为 1000 (http://online-service.thm/profile?user_id=1000),令您惊讶的是,您现在可以看到其他用户的信息。您现在发现了一个 IDOR 漏洞!理想情况下,应该在网站上进行检查,以确认用户信息属于请求它的用户。

在编码中发现IDOR

当通过帖子数据、查询字符串或 cookie 将数据从一个页面传递到另一个页面时,Web 开发人员通常首先会获取原始数据并对其进行编码。编码可确保接收 Web 服务器能够理解内容。编码将二进制数据转换为 ASCII 字符串,通常使用 a-z、A-Z、0-9 和 = 字符 用于填充。Web 上最常见的编码技术是 base64 编码,通常很容易被发现。您可以使用网站 Like https://www.base64decode.org/ 解码字符串,然后编辑数据并使用 https://www.base64encode.org/ 再次重新编码,然后重新提交 Web 请求以查看响应是否有更改。

请参阅下图作为此过程的图形示例:

哈希IDOR

散 列 ID 比编码的 ID 要复杂一些,但它们可能遵循可预测的模式,例如是整数值的哈希版本。例如,如果使用 md5 哈希,则 ID 号 123 将变为 202cb962ac59075b964b07152d234b70。

值得将任何发现的哈希值通过 Web 服务,例如 https://crackstation.net/(它有一个包含数十亿个 hash to value 结果的数据库),看看我们是否能找到任何匹配项。

Unpredictable IDs

如果使用上述方法无法检测到 ID,则 IDOR 检测的一个很好的方法是创建两个帐户并在它们之间交换 ID 号。如果您可以使用其他用户的 ID 号查看其他用户的内容,同时仍然使用其他账户登录(或根本未登录),则您发现了有效的 IDOR 漏洞。

IDOR在哪里

您所针对的易受攻击的终端节点可能并不总是您在地址栏中看到的。它可能是您的浏览器通过 AJAX 请求加载的内容,或者您在 JavaScript 文件中找到引用的内容。

有时,终端节点可能有一个未引用的参数,该参数可能在开发过程中有所用处,并被推送到生产环境中。例如,您可能会注意到对 /user/details 的调用显示您的用户信息(通过您的会话进行身份验证)。但是通过一种称为参数挖掘的攻击,您发现了一个名为 user_id 的参数,您可以使用它来显示其他用户的信息,例如 /user/details?user_id=123

使用 Hugo 构建
主题 StackJimmy 设计