前几天参加了一场竞赛,报名后需要登录平台完善个人信息。在使用过程中,我不知不觉地打开了Yakit,结果意外发现了一系列安全漏洞。由于担心被发现,这里做了一些厚码处理。
实战挖掘
点击查看团队信息这里
注意到了这个数据包,它返回的是团队里所有成员的信息,包括指导老师和参赛学生的用户id、邮箱、学校、专业、学号、加密的身份证号等等信息
url是xx/xxx/groupInfo/123456这种形式,结尾是一个八位的数字,所以可以直接遍历,看其他团队的信息,存在越权漏洞
浅浅遍历了下发现有挺多团队信息的,感觉至少有几万以上吧
而且还发现有小部分的队员的身份证号是以明文返回的,不知道开发怎么设计的
在平台瞎点的时候注意到了一个包,响应了内容里有很多的"allow": false,看样子和权限有关
写个热加载,把该接口的"allow": false全部改为"allow": true
用yak简单三行代码实现
热加载开起来,刷新页面,果然多出了几个功能模块
挨个点进去看看,大部分都显示没有权限查看或访问,最后在账号管理处发现了一个账号
并且在查询的响应包中发现还返回了这个账号的md5密码,这不就是弱口令123456嘛,这个账号我们先记着
账号操作部分是灰色的,尝试改一下前端显示
直接把disabled属性删掉,“重置密码”按钮亮了起来
在点击重置密码看看,把密码改成1234567,点击确定,看看数据包
再刷新页面看看查询用户的数据包,发现密码的MD5变了,应该是修改成功了
注意到重置密码的数据包,post参数idList里的值是该用户的id,我们前面发现越权漏洞的时候,返回的数据包里刚好有其他用户的id,敏感的嗅觉告诉我,这难道是 任意用户密码重置?
立马试试看
为了不影响其他同学,我找到的指导老师的用户id,然后把他的密码改了,结果如下
密码是改了,但是没有其他用户的手机号呀,登录系统是需要手机号的,然后回到登录口我发现????邮箱也可以作为账号登录?
于是我利用该接口把自己的密码改成123456,再用邮箱登录试试看
可以登录,刚好前面越权的接口也返回了其他用户的邮箱信息,那任意用户密码重置漏洞就升级为任意用户登录了
还记得刚才在账号管理处的那个账号吗,登录进去看看
看起来好像只是一个普通用户权限的账号
再把热加载修改响应包开起来,看看有没有什么不同
结果发现,权限还真不一样,有东西的
不搞了,溜了溜了
原文始发于微信公众号(C4安全团队):漏洞实战挖掘 - 某竞赛平台漏洞实战
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论