InsecureDirectObjectReference(IDOR也称为overreach)是一种非常常见的Web授权逻辑漏洞,其利用有时危害很大,有时则非常严重。今天我们将讨论一种严肃的IDOR漏洞利用方式——利用IDOR劫持账户或项目。作者利用该漏洞在多个公测项目中获得了高达25000的赏金。如果攻击者劫持了受害者账户,他可以作为受害者执行所有账户环境操作。如果攻击者劫持项目,则可以获得相应的项目管理权限。有时IDOR攻击并没有实现对目标账户的完全劫持,但它可以在受害者或管理员账户的上下文中获得一些资源访问管理权限。我在多个众测项目中都遇到过这种情况。IDOR漏洞引入了不安全的直接对象引用(InsecureDirectObjectReference)。该漏洞经常出现在一些公司的helpdesk接口系统上。通过更改其中的票证或用户ID,可以读取其他用户。相关账单或账户信息。但在实现上,IDOR漏洞并不仅限于改变ID值来读取他人资源,它还可以导致某些数据被篡改。另外,如果有时候相关的ID很难被猜到,或者换成UUID或者HASH字符串,这种情况下出现IDOR漏洞的可能性很小。不过根据我的经验,只要仔细测试,还是可以找到一些有用的ID的。按照产生的后果来分类,IDOR可以分为以下四类:数据读取数据篡改提权(这是一种很特殊的数据修改方式)账户劫持(真正的提权)下面讨论利用IDOR漏洞启用账户或项目劫持。使用IDOR实现账号劫持如果使用IDOR劫持目标账号或实体项目怎么办?比如这里有一个主账号,在其账号环境中创建了一个名为manager的子账号或者一些运营项目。我们的目的是劫持manager子账号,对项目进行操作。劫持主账号或用户会话相对困难,因为有时攻击者的账号环境无法直接访问主账号,但我们可以通过劫持低权限子账号或其关联项目来劫持主账号。以下是我在一些众测项目中遇到的情况。1.创建或删除项目时出现的IDOR漏洞例如,一个网站对于普通用户有不同的订阅套餐对应不同的价格,对于企业客户会根据需要设置企业套餐。我的测试账号在企业计划范围内,可以访问企业计划项目,可以添加常规项目,可以查看对应状态。我同时在两个地方发现了IDOR漏洞:向企业计划添加项目时和删除项目时。添加项目时,操作非常简单:提交一个内容为JSON格式的POST请求,其中包含项目名称。由于项目名称任何人都可以查看,所以这里的IDOR是你可以在请求中包含其他人的项目名称。在里面提交,从而获得对别人项目的控制和管理:POST/api/projects/victim/childrenHTTP/1.1Host:victim.com{"subdomain":"victim1"}other删除处的IDOR有点复杂,该网站在逻辑上基本上是删除项目的机制不正确。比如在删除一个item时,它的POSTdelete请求只包含了一些序列化的item描述属性,而没有具体item相关的id号。所以这里的IDOR漏洞就是可以在这个POST请求中加上项目号,改成别人的项目ID,从而删除别人的项目。这里的复杂点在于项目ID号是随机的,所以别人的项目ID是猜不出来的,但是可以通过一种方式找到:去项目公众号主页的HTML页面找,如下:因此,最后删除他人项目的POSG请求可以构造如下:Host:victim.comCookie:...{"childrenProjects":["id_project1","id_project2","id_project_victim"]}2.用户信息获取时的IDOR漏洞以这种方式更新的漏洞结合利用了另一个不当的访问控制漏洞,最终达到了非常高危的影响。由于权限控制配置不当,可以查看他人项目详情及关联子账号,利用该漏洞获取部分敏感数据。但是在进一步的研究中,我又发现了一个问题:就是在更改个人资料的过程中,你可以通过ID的形式关联别人的子账号,这样你就可以控制子账号,控制它的创建项目,查看和编辑相关数据,实现账号劫持IDOR。总结经过测试,我在city-mobil.ru的跨平台系统中发现了这样一个由IDOR引起的账号劫持漏洞。利用这个漏洞,我可以获得超过100万名司机的数据:护照和驾照信息,还可以更改Driverprofile数据。我曾利用此类漏洞在多个公开测试项目中获得25,000的奖励,但如果此类落入网络犯罪分子手中,其价值远不止于此。参考来源:检测
