重生第三篇之针对某医院微信小程序的漏洞挖掘

Gcow安全团队

共 2316字,需浏览 5分钟

 ·

2024-03-28 06:30


点击上方

53573b8aeec378b064a305d31612f3f5.webp f6dd8c80dcf59c8a03ae07c38cf7921e.webp fef4a6ff0b959ff4c615112ce91a2a2a.webp

关注我们

蓝字

      c426e8e981bdb641452ab84ca6afe8a3.webp


96aa360d5feff31fb19913610a2ce75f.webp

前言


    此篇文章主要是针对某医院微信小程序的漏洞挖掘,微信小程序默认是直接使用自己微信登录的,我们对小程序的漏洞挖掘,关注点还是在逻辑漏洞上面。
96aa360d5feff31fb19913610a2ce75f.webp

环境配置


工具: Burp+Charles+windows版本微信 具体环境配置如下: 安装Charles解压后运行软件,安装ssl证书到系统受信任的根证书下。 在微信客户端打开要抓包的小程序,观察Charles左侧的请求 详细操作如下图:

be490a33e58617ea5f528b81748770f2.webp

7a006a7d24de1b1c01f5d65e40debdf0.webp

e8624554b51d51ddc956609ca884c26e.webp

04d173b98323cf9198eb3a62c3b14993.webp

5e8f570fc1144d66b871903de88e102a.webp

974afe74b5509656339f4a72403379bc.webp

然后点击“proxy”--“windows proxy” 至此环境配置完成

30aafcd5459dd1d0cc06c240e34aa9a5.webp


96aa360d5feff31fb19913610a2ce75f.webp

漏洞挖掘过程


漏洞一: 打开微信小程序,自行绑定一张健康卡

de03732a1156a312251da00175bb3d5c.webp

进入“个人中心”--“挂号记录”这里没有数据,因为我没有挂号--!,查看了一下数据包也没有发现存在可以越权的参数

6f9b6086105e87983634b1d0c0dc61d5.webp

先去挂个号再回来试试,进入首页选择“预约挂号” ,随便选择一个医师挂个号。

4b05fa3c259779e9bdec8bd082e69030.webp

挂号成功之后发现返回一个挂号单信息,我们在burp中可以看到,请求包中有个body=参数

ecad27a494e45ebb7eb74bb906c3b806.webp

我们修改body=参数的值然后再发包,可以看到成功越权查询到其他用户的挂号信息如 下:

2d8bd812b8bd3726db286f6fa68a4416.webp

使用burp进行对body=参数进行爆破可以越权获取到大量用户的挂号信息

10b7529b587603ab2a8aed3793acd5a9.webp

漏洞二:     我们进入缴费记录模块时发现了一个patientId的参数,但是修改之后发包,发现返回包提示没有权限,猜测应该之前挨过打,修复了这个参数的鉴权,因为自己没有缴费记录,没法测试,这个模块先放一下

16c0ca114e9fb0d92c64de29560f76d7.webp

返回首页,进入健康体检模块

595e99465cbdf85f133b352ba6011b71.webp

然后进入个人中心,看看有那些功能模块,这是我们发现在burp的历史请求包中有一个可控的参数PeisPid,但是可惜的是返回包的中的数据全是加密的,能得到的信息很少,只能性别、年龄、出生年月、民族等,然后前端就有个明文的姓名和加密一半的手机号—_—!

fc617189dbbd5683893093d84737f4a0.webp

640030b2b5dcbd3fde4d13f479f294cd.webp

不管啦,先intruder梭哈一下看看PeisPid参数能不能越权,结果显示是可以的

f912557259e313b9da3227ba7b901ac3.webp

我们来测试一下,返回首页,再进入个人中心的同时拦截数据包,修改数据包中的PeisPid值,然后放包,结果成功越权到其他用户的个人信息页面,这里可能有人会说这数据都是加密的啊,你越权了也没用啊。额......确实是没用,不要慌咱接着往下编...挖

486088f909bed4704d08db37c1c77c53.webp

注意:这里的peispid咱是可以遍历的昂

6b5542ffb8b49fbcbfbc6bc9a87711ff.webp

先创建一个体检订单看看,返回首页,选择任意一个套餐

1ffc2af4f49789a17775933072365b0d.webp

然后立即预约、提交订单就会提示订单创建成功,同时burp的历史数据包中会拦截到以下两个数据包,这个是创建订单的数据包

92a246b1c81fd6375840c89ebf0cbd8a.webp

这个是订单详情的数据包,可以看到这个订单详情的数据包里面携带了用户的个人信息而且是明文的。

919a6ec718daab58cc8c1e28f38e13bc.webp

那问题来了,查询条件是一串加密值,而且如果别人没有订单的情况下我们怎么利用这个漏洞去获取其他用户信息呢?

396bda59c8a58f775cadce70865c2284.webp

注意,咱们之前说过peispid是可以遍历的,也就是说可以通过peispid系统中所有已经注册的用户

dea64abfa7987084e5d8efaeeb0a2f70.webp

以下是抽样的结果

d434378e861dc9bafbb47ecafd91f4dc.webp

然后我们再看创建订单的数据包,同样是以peispid来判断是那个用户在创建订单的,而订单创建完成之后,返回包中又会携带查询订单详情的密文值(应该是订单号的加密值)

1783bfc652860a68b7c7d5973940df3b.webp

这样需要的条件就齐全了

257c96c0278b98f1c5083aa12acb69dc.webp

那我们通过修改peispid值,给我们刚刚抽样出来的用户创建一个订单试试,如下,结果显示成功越权给其他用户创建了订单,并返回了密文值

1deac189bec3d5e559a220f48111ec6a.webp

然后通过创建订单的密文值,成功查询用户的个人信息

ba83916ce61d1c9cd48f4b4592813656.webp

ed668ad1f2b4631f6d5cc6551d3f35ea.webp

漏洞三:

到这里我突然想起前面还有一个报告查询的模块,但是我自己的账号没有体检报告记录没法测,那如果我们用有报告的账号去测试是不是还能再挖点呢?

dadc4165bdde6a3c659a0f08acdff6bd.webp

通过漏洞二获取到了目标系统用户的个人信息包含姓名、身份证号、手机号这些的,那么我们直接用户获取到的用户信息去绑定健康卡,嘿,居然没有二次认证可以直接绑,舒服

aa0340da1a11cecc1a7a0847a776f0c8.webp

绑完卡后我们再返回首页--点报告查询,把查询年份拉久一点,看看能不能查询到用户的一些检查报告,嘿嘿 果然可以

9eac19501e20be4205ac7c0aba22929e.webp

随便选择一份报告点击进入报告详情页面,然后我们在burp的分析一下数据包,数据包中的参数就俩,经过测试发现是ZlhisInspectionService.5717002这参数控制查询的

e9d0f1df33fd003be2b2707c038504bd.webp

而且在返回中就可以看到用户详细的身份信息了如下,那我们直接对ZlhisInspectionService.57170028 参数,遍历测试看看效果

657ffa9649c9ad473e75c6a6c5d1fbe3.webp

直接上intruder梭哈

a8d388fc0bc2a8678ffeacd1b438c891.webp

成功遍历出大量的用户体检报告数据,体检报告中又同时携带用户的姓名、身份证号等敏感信息

e673da6b2b5c0800807577c575b20ec7.webp

d7a9d46e4b21a7ef28a43be4c26be153.webp


96aa360d5feff31fb19913610a2ce75f.webp

结束


    到此本次小程序渗透就基本结束了,由于目标系统有waf一碰就封啦,我就没有扫端口、扫目录,直接挖逻辑了。

5dc2a0f9fb9114d9dc098fa4c0a6b47a.webp

浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报