记一次IDOR漏洞挖掘:通过JS文件发现隐藏接口

导语:在漏洞挖掘过程中,直接尝试利用往往碰壁,但换个思路——分析JS文件里的隐藏接口——往往能打开新世界的大门。本文记录了一次在密码管理器应用中发现IDOR漏洞的完整过程:从最初的接口尝试失败,到通过JS文件发现新攻击面,最终实现越权查看他人设备信息。


一、背景介绍

目标应用是一款现代密码管理器,核心功能之一是添加可信设备。用户将某台设备添加为”可信设备”后,再次在该设备上登录时,可以跳过OTP验证码,直接登录。这个功能本意是方便用户,但实现上埋下了IDOR漏洞。


二、漏洞描述

存在一个API接口用于获取当前账户的可信设备信息,该接口接收用户账户的UUID并返回设备信息。然而,这个API存在IDOR(不安全的直接对象引用)漏洞,允许攻击者查看同一租户内其他用户的可信设备信息。

IDOR是什么?

IDOR(Insecure Direct Object Reference,不安全的直接对象引用)是一种访问控制漏洞,发生在应用基于用户提供的输入直接访问对象时。任何形式的信息都以对象形式存储,例如用户信息就是通过特定标识符(如可预测的整数或随机字符串)来引用的对象。

当这些标识符可以被随意篡改,以未授权访问他人对象时,IDOR漏洞就产生了。


三、首次尝试——碰壁

你可能想到的做法:创建两个账户,把账户B的UUID替换进接口地址,来获取账户B的可信设备信息。

/api/v3/trusted-devices/<UUID>

我也这样试了,但没有成功——接口返回了403权限错误。

首次尝试返回403错误

四、JS文件挖掘——新思路

说实话,一开始我已经打算放弃这个IDOR了。但后来在尝试执行另一个攻击的过程中,我开始审查JavaScript文件,想找出所有与admin相关的请求(以 /api/v3/admin/* 为路径的请求)。

就在这个过程中,我偶然发现了一个接口,让我眼前一亮。

这个接口是在点击”与你共享过密码的成员”时触发的,返回的是有限的账户信息,比如姓名和角色:

/api/v3/members/<UUID>/account/info

于是我想:如果 ../account/info 只返回有限的账户信息,那我改改路径呢?


五、漏洞利用

没有太多复杂的操作,我只是把API接口路径改成了获取其他成员可信设备信息的格式——成功了

/api/v3/members/<UUID>/trusted-devices/info

通过把另一个用户的UUID替换进这个接口,我成功获取到了对方的设备信息,包括:

  • 用户的User-Agent
  • IP地址
  • 多个加密密钥

至于UUID本身,在应用里到处都是泄露。例如:当一个注册用户与你共享一套凭证时,他的唯一UUID就暴露在分享链接里。


六、漏洞影响与报酬

这次漏洞最大的影响是其他成员的外部IP地址和加密密钥泄露

我最初报告时评级为”高危”,但被砍到了”中危”。不过,漏洞就是漏洞,能拿到报酬就行。

漏洞赏金

七、总结

这次IDOR漏洞的挖掘经历说明了一个道理:直接尝试不成功,不代表没有漏洞。换个思路——分析JS文件里的隐藏接口、观察应用的请求路径——往往能发现新的攻击面。

关键技巧

  • 即使初步尝试失败,也要保持探索
  • JS文件里藏着大量未文档化的接口
  • 观察正常功能触发的API请求,改路径、换参数,往往有意想不到的收获
  • UUID等标识符在应用中泄露很常见,可以作为攻击的跳板

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容