文章总结: 文档系统分析Java鉴权绕过技术,涵盖Interceptor、Filter、Shiro、JWT四种主流鉴权方式的代码审计方法。通过NewbeeMall、华夏ERP、Tumo博客、FastCMS四个案例展示具体漏洞:Interceptor通过特殊路径构造绕过、Filter利用路径遍历绕过、Shiro配置不当导致未授权访问、JWT密钥管理风险。核心发现鉴权漏洞常源于路径校验逻辑缺陷或配置疏漏,建议审计时重点检查拦截规则、Shiro配置及JWT密钥强度。 综合评分: 85 文章分类: 代码审计,漏洞分析,WEB安全,渗透测试,安全工具

0x04 Shiro 鉴权审计 – Tumo 博客系统
1、项目介绍 – Tumo 博客系统
Tumo Blog 是一个简洁美观的博客系统,基于 SpringBoot2.X + Vue.js 技术栈开发。
下载地址:https://github.com/TyCoding/tumo
2、Tumo – Shiro – 代码审计
2.1、确定鉴权方式
翻阅项目的 pom.xml 文件以及 External Libraries 依赖库,观察到 Shiro 相关关键字。由此可确定,该项目采用 Shiro 进行鉴权
2.2、查看shiro配置
查看 tumo.properties,发现有关 Shiro 的配置,其中 anon_url 为可匿名访问的路径(一般代表不需要鉴权)。不同于 Shiro 本身的漏洞,这里的鉴权漏洞是由于开发、运维不当的 Shiro 配置所造成的。
2.3、漏洞利用
根据Shiro配置信息,寻找利用点,比如 /comment/** 是不需要鉴权的。全局搜索 “/comment” 相关的 Controller 文件,定位到 CommentController。测试删除评论,路由为 /comment/{id},提交方式为 DELETE
0x05 JWT 鉴权审计 – FastCMS
1、项目介绍 – FastCMS
FastCMS 基于 SpringBoot 进行插件式开发,拥有强大的扩展性。它不仅内置了一套完整的 CMS 建站系统,还支持博客、论坛、商城等多种功能。
下载链接:https://gitee.com/xjd2020/fastcms
2、JWT 鉴权漏洞审计思路
在 JWT 鉴权的审计过程中,像空加密和未校验签名这类情况较为罕见,通常出现在新手开发或运维的项目中。较为常见的漏洞风险主要集中在默认密钥未修改以及密钥存在被爆破的可能性。具体审计要点如下:
-
生成时使用空加密
:这属于逻辑代码层面的问题,若 JWT 生成时采用空加密,会使数据失去保护,存在极大安全隐患。
-
服务端未校验签名
:同样是逻辑代码问题,服务端若不对 JWT 进行签名校验,无法验证 token 的合法性与完整性,可能导致非法访问。
-
密钥默认未被修改
:项目搭建完成后,开发者如果未修改默认密钥,攻击者一旦知晓默认密钥,就能伪造合法 JWT 进行非法操作。
-
密钥爆破可能性大
:当密钥设置过于简单,比如长度较短、字符组合单一,攻击者可通过暴力破解手段获取密钥,进而伪造 JWT 突破鉴权机制。
3、FastCMS – JWT – 代码审计
3.1、确定鉴权方式
翻阅 pom.xml 和 External Libraries,观察到 JWT 相关 Dependency 信息。
jwt特征
3.2、审计流程
分析 JwtAuthTokenFilter,它主要执行了以下操作:
-
JWT 令牌检查与认证信息设置
:在请求到达控制器之前检查 JWT 令牌,并将令牌中的认证信息设置到 Spring Security。这一步是整个鉴权流程的基础,通过对 JWT 令牌的检查,获取其中包含的用户认证信息,并将其融入到 Spring Security 的认证体系中,为后续的权限判断提供依据。
-
身份验证需求判断
:过滤器根据请求 URI 的前缀判断是否需要进行身份验证。不同的 URI 前缀可能对应着不同的业务功能和访问权限要求,通过这种方式可以灵活地确定哪些请求需要进行严格的身份验证,哪些请求可以允许匿名访问,提高系统的安全性和灵活性。
-
过滤器链执行与错误处理
:如果需要验证且 JWT 令牌有效,它将继续执行过滤器链,让请求能够正常访问后续的资源;否则,它将返回相应的错误响应。当 JWT 令牌无效(如过期、签名错误等),或者请求本身不需要携带 JWT 令牌但却缺少有效令牌时,系统会返回对应的错误信息,阻止非法访问。
-
JWT 的验证到底有没有问题,关键就在于 tokenManager 的各个方法是否存在问题,于是跟踪到了 DelegatingTokenManager,检查其各个方法的代码,发现不存在空加密或未校验签名的问题。
转而查看 application.yml,发现密钥 secret-key 为官方默认的,也就是说搭建后未修改过。
3.4、漏洞利用
利用默认密钥,生成管理员账户的 JWT(注意修改过期时间 exp)
BurpSuite 抓包修改 JWT 值,成功进入管理员后台
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:韭要学JAVA安全 1 1《Java代码审计鉴权绕过》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论