v2board数据泄露漏洞复盘:
通过review问题代码发现,问题在于鉴权中间件。
1.6.1版本的token存储方式从session改成了cache,导致作者重写了鉴权代码
新的鉴权代码造成了严重的漏洞
众所周知v2board的管理员信息和用户信息都在user表,仅用is_admin字段区分是否管理员
管理员API的中间件鉴权代码和用户API中间件鉴权代码一模一样,只是多了个is_admin校验。
如图所示中间件首先会检查浏览器提交的token是否在服务器cache,也就是redis中。如果有,直接通过鉴权。
问题就在于这,普通用户在登录后生成的token已经在服务器redis表中,所以将普通用户的token直接提交到管理员相关API接口,即可通过鉴权,没有任何权限校验。
也就是普通用户的token,可以随意调用管理员的API,相当于拥有了完整的管理员后台权限。
https://twitter.com/AyagawaSeirin/status/1603385153480716288