一次普通的越权漏洞挖掘:从舔狗越权支付到反转拿下隐私

「前情提要」

在对某小程序进行漏洞挖掘时,发现了一个越权漏洞。虽然无法直接获取他人个人信息(返回包和回显均已脱敏),但最终还是绕过了限制,成功拿到了隐私数据。

「漏洞介绍」

这个漏洞的本质是越权替他人支付,这貌似是著名的舔狗漏洞,但是,就是靠着这个舔狗漏洞,我成功拿下了一个EDUSRC的证书站。
在此将思路和各位师傅分享,我愿称其为舔狗漏洞Plus版。

「漏洞详情」

【1】信息录入
进入小程序,点击支付功能,随意输入信息:

image.png

【2】点击确定后进入支付页面,抓包发现,响应包中回显了一个表示当前用户信息的ID,此处为表示方便,称为personId。将其修改为另一个账号对应的personId:

image.png

【3】放行后再次抓包,拦截到下一个请求:

image.png

【4】放行该包后,发现返回了数据——难道这就结束了?并没有,关键信息全部脱敏了😭

image.png

【5】难道挖掘到此为止?有点不甘心。放行返回包后,来到了支付页面。我心想:这个漏洞大概率被其他人发现过、提交后已修复了。但如果我真的支付了,会发生什么?

【6】于是,输入0.01,点击支付,如下:

image.png

【7】支付完成后跳转页面,Burp 突然拦截到一个新的数据包。果断放行并拦截响应包,果然,成功越权获取到了对方的个人信息(后续也测试了,这个新数据包的ID虽然是数字形式,但是是不可遍历的,此处加上拦截了)。

image.png

「挖掘反思」

事后复盘,反思逻辑如下:小程序在支付前需要录入个人信息,随后返回一个personId供后续支付使用。问题在于,personId可以被遍历,攻击者可以一直尝试读取下一位personId,劫持其支付状态。

将其修改为已注册但尚未支付的其他用户的 personId,就能以小金额劫持对方的支付订单。支付成功后,借助新触发的数据包,即可获取被劫持人的姓名和身份证信息。

其实所有带有可遍历数字ID的数据包都已经做了鉴权,但可能开发也没考虑有人真会劫持订单然后付钱吧🥲。

我付了钱,后端就会真以为我是这个信息的主人,那自然而然就会返回真实数据给我。

温馨提示:本文内容仅用于合法授权的安全学习与研究交流,严禁用于未授权渗透测试、漏洞利用或任何违法行为。

涉及企业或平台的未公开漏洞信息,请遵循负责任披露原则,勿公开传播可直接复现的敏感细节。

如存在侵权、错误信息或不当内容,请联系站方处理,我们将及时核实并删除。邮箱:admin@baimaojianghu.com。