一次普通的任意用户登录:从寻找加密参数到敏感信息泄露

「前情提要」

在某高校访客系统中,无意间发现两个功能模块(访客预约、我的预约)。本着测试心态,尝试挖掘其中可能存在的漏洞。

「漏洞详情」

【1】点击小程序进入后,看到此处是两个功能点,一个是访客预约,一个是我的预约。

image.png

【2】刚开始想先测一下我的预约能不能实现越权,但是发现有很多加密数据,如下图:

image.png

【3】一开始不知道该怎么解,就先随意登录一个账号,抓包看一下返回包。发现返回包里面的两个手机号是明文可修改的。

image.png

【4】此处就能想到,如果我修改了再放包会不会能通过这个方式实现任意用户登录?因为是第一次使用这个小程序,所以我没做修改,在这留了一个疑问继续往下看。
放行上述包后,发现Burp又拦截到一个数据包,如下:这里很明显是上一个包的返回包的加密后的数据。

image.png

【5】为了验证我的输入会不会对这个加解密结果造成影响,我就把这个包丢了(防止直接放包后进入小程序无法退出),然后重新进入小程序,再发一下包,修改响应体中的明文手机号,查看是否会变化。
再次点击获取手机号,拦截返回包后随便输入一个手机号,如下:

image.png

【6】事实证明,确实有效,此处姑且先认为是后端返回来明文手机号,前端在加密传到后端进行登录的。

image.png

【7】那么问题就来了?如何获取到这个学校的教职工的手机号呢?此处优先尝试先在这个访客系统找,上述两个功能点,只点了第二个,而第一个还没看,但是根据常见漏洞而言,如果让选择被访人的话,大概率是会有一些信息泄露的。
正常登录,点击“访客预约”,如下:

image.png

【8】随便选一个部门,然后点被访人员

image.png

【9】随便输一个这个学校官网的人员,点了姓名查询,看了返回包,里面数据依旧加密。

image.png

【10】原本到这里已经准备放弃了,但是放行后,一看小程序界面,收集到了手机号。

image.png

【11】有了手机号,就有了任意用户登录的测试方法,清空小程序缓存,重新登录。

【12】修改第一个包的返回内容为收集到的手机号。

image.png

【13】拦截第二个包,看到第二个包的目录名是通过手机号查询用户信息,果断拦截返回包。

image.png

image.png

【14】到此任意用户登录已经结束了,因为已经获得这个身份了,虽然没办法知道具体信息,但是也能登录看这个用户的访客记录。不过想着危害不大,没啥用(到此还不知道这是一个证书站),就想着要不继续解解密试试。
果断试试反编译小程序,此处我用的是UnpackMiniApp解密,然后wedecode反编译。
进入后,直接搜关键词Crypto

image.png

【15】跳转如下:刚开始以为是DES加解密,试了半天没试出来,然后又看到不对,DES就三个字母,咋这么长,才看到前面有一个TripleDES,是3DES加解密。

image.png

【16】可以试试这个网站,3DES加解密:https://www.lddgo.net/encrypt/tripledes
写密码和偏移量IV,开始解密,需要注意的是,这里把IV混淆了一下,没咋看,直接扔给AI分析了。然后得出了正确的IV。

image.png

【17】至此整个流程结束,需要注意的是,这里有一个人脸照片是Base64格式的,可以用这个网址,把base64转回图片(经典CTF考题)https://www.lddgo.net/convert/base64-to-image

image.png

「挖掘反思」

后端把手机号明文交给前端,又允许前端修改后传回来登录,本质上是把“我是谁”的决定权交给了客户端。再加上被访人手机号直接暴露在页面上、加解密的密钥就写在小程序代码里,整套流程就像把保险箱密码贴在保险箱上。所以各位师傅在遇到的时候,也可以多测测,说不定就有惊喜呢。

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

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

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