0x01 鉴权方式&审计思路
1、目前主流的鉴权方式
Interceptor是一种拦截器,也称之为拦截器链(Interceptor Chain),主要用于拦截请求、响应或处理过程中的某些事件,比如权限认证、日志记录、性能测试等。在 Java 中,Interceptor可以用来扩展框架,增加或修改某个方法的行为,或者对应用流程做些前置处理、后置处理、环绕处理等。
Filter被称为过滤器,过滤器实际上就是对Web资源进行拦截,做一些处理后再交给下一个过滤器或Servlet处理,通常都是用来拦截request进行处理的,也可以对返回的 response进行拦截处理。开发人员利用filter技术,可以实现对所有Web资源的管理,例如实现权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
JWT(JSON Web Token),将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身份。基于token的身份验证可以替代传统的cookie+session身份验证方法。这使得JWT成为高度分布式网站的热门选择,在这些网站中,用户需要与多个后端服务器无缝交互。
2、鉴权漏洞审计思路
不同于常规审计思路,鉴权漏洞几乎没有业务关键词供搜索,其特征较弱。所以,针对鉴权漏洞的代码审计,思路为直接找鉴权技术特征目录进行代码追溯。
- 找有没有
Interceptor
,拦截器里有没有鉴权 - 找有没有
Filter
,过滤器里有没有鉴权 - 找有没有
Shiro
,看版本及里面的逻辑配置 - 找有没有
JWT
,看后面写的四个方向确定 - 若以上都没有,可能是自写的鉴权代码
0x02 Interceptor鉴权审计 - NewbeeMall电商系统
1、项目介绍 - NewbeeMall
Newbee-mall 项目是一套电商系统,包括 newbee-mall 商城系统及 newbee-mall-admin 商城后台管理系统,基于 Spring Boot 2.X 及相关技术栈开发。
前台商城系统包含首页门户、商品分类、新品上线、首页轮播、商品推荐、商品搜索、商品展示、购物车、订单结算、订单流程、个人订单管理、会员中心、帮助中心等模块。
后台管理系统包含数据面板、轮播图管理、商品管理、订单管理、会员管理、分类管理、设置等模块。
下载:https://github.com/newbee-ltd/newbee-mall
2、Interceptor 补充介绍
参考:Spring Boot拦截器(Interceptor)详解详解")
Interceptor必须重写以下三个方法:preHandle、postHandle、afterCompletion
- preHandle 方法:在请求处理之前被调用。当它返回 false 时,表示拦截请求,不继续执行后续处理器;当它返回为 true 时,表示放行请求,继续执行后续处理器