记一次由JWT导致的绕过权限

本文介绍了一种通过JWT令牌认证的系统中实现权限绕过的具体方法。首先利用弱口令登录系统,然后通过修改特定URL请求中的JWT令牌,成功绕过了权限检查。

文章目录


前言

      记一次由JWT导致的绕过权限,以下相关链接均为随意编造的。


一、思路

     1)使用弱口令账号密码登录了系统。
在这里插入图片描述
     2)访问URL:https:/xxxxx:8888/aaaa/bbbb/cccc/list?ids=418,会提示访问权限不足。
在这里插入图片描述
     3)抓包后发现是JWT的token认证。
在这里插入图片描述
     4)添加Authorization: Bearer 并把token中的内容粘贴复制,即可绕过。
在这里插入图片描述

<think>嗯,用户想在XXL-Job中跳过JWT验证来调用执行器。首先,我需要理解整个问题的背景。XXL-Job是一个分布式任务调度平台,通常执行器和调度器之间会有安全验证机制,比如JWT。用户可能需要绕过这个验证,可能是为了测试或者其他特殊需求,但需要注意安全风险。 首先,我得回忆一下XXL-Job的架构。调度中心负责管理任务,执行器负责执行任务。两者之间的通信可能需要认证。JWT通常用于验证请求的合法性,如果用户想跳过这个验证,可能需要修改调度中心或执行器的配置。 接下来,我应该检查用户提供的引用内容。引用1提到在SpringBoot中使用XXL-JOB,其中XxlService类处理任务添加。引用5提到系统使用XXL-JOB作为任务调度,结合了SpringCloud架构。这说明用户可能是在Spring Boot环境中配置XXL-Job的执行器,需要调整相关的安全配置。 可能的解决方案有几个方向:关闭执行器的安全验证、配置白名单、修改调度中心的请求头或者自定义通信协议。根据引用中的信息,用户已经用到了XXLUtil和XxlService,可能需要在执行器端调整接收请求时的验证逻辑。 比如,关闭执行器的accessToken验证,这可能在配置文件中设置。引用1中的application.properties有xxl.job.accessToken,如果留空可能禁用验证。但用户的问题是关于JWT,这可能意味着他们自定义了JWT验证,而不仅仅是XXL-Job自带的accessToken。 如果是自定义的JWT验证,可能是在拦截器或过滤器中实现的。用户需要找到相关的JWT验证代码,并暂时禁用它,或者添加排除路径,让XXL-Job的请求不经过JWT验证。例如,在Spring Security中配置忽略特定的URL路径。 此外,调度中心发起的请求可能需要携带正确的token,或者执行器需要信任调度中心的IP,将其加入白名单。引用3提到执行器被轮询调用,可能需要网络策略允许调度中心的访问。 需要提醒用户注意安全跳过验证会带来风险,建议仅在测试环境使用,并恢复生产环境的安全配置。同时,提供替代方案,比如使用低权限的token或者加强其他安全措施。 总结可能的步骤:检查XXL-Job的accessToken配置,调整执行器的安全设置,修改自定义的JWT验证逻辑,配置网络白名单,并测试验证是否已跳过。同时,强调安全注意事项。</think>### 如何在XXL-Job中跳过JWT验证调用执行器? 在XXL-Job中,调度中心与执行器之间的通信默认通过HTTP协议完成,若系统集成了JWT验证机制,需通过以下方式跳过或适配验证: --- ### 1. **关闭执行器的安全验证**(适用于调试场景) 若执行器端自定义了JWT验证拦截器(如通过Spring Security或自定义Filter),可通过以下方式跳过: - **方法1:排除XXL-Job的请求路径** 在JWT拦截器中配置排除路径,例如忽略`/xxl-job-admin`或`/api`相关的调度请求: ```java @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/xxl-job-admin/**").permitAll() // 允许XXL-Job路径无验证 .anyRequest().authenticated() .and().addFilterBefore(jwtFilter(), UsernamePasswordAuthenticationFilter.class); } } ``` - **方法2:关闭XXL-Job自带的AccessToken验证** 在`application.properties`中设置空值: ```properties # 执行器配置 xxl.job.accessToken= ``` --- ### 2. **调度中心配置白名单**(生产环境推荐) 若需保留安全验证但允许调度中心调用,可在执行器端配置调度中心IP白名单: - **修改执行器配置文件**: ```properties xxl.job.ips=192.168.1.100,192.168.1.101 # 调度中心IP列表 ``` - **在JWT验证逻辑中增加IP白名单判断**: ```java public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { String clientIP = request.getRemoteAddr(); if (whiteList.contains(clientIP)) { return true; // 白名单IP跳过JWT验证 } // 其他请求验证JWT } ``` --- ### 3. **修改调度中心请求头** 若执行器要求携带JWT,可在调度中心发起请求时自动附加Token: - **自定义调度中心请求拦截器**(需扩展XXL-Job源码): ```java public class XxlJobRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { requestTemplate.header("Authorization", "Bearer " + generateJwtToken()); } } ``` - 将拦截器注册到调度中心的HTTP客户端中[^1]。 --- ### 4. **自定义通信协议** 通过替换XXL-Job的默认HTTP通信模块,使用自定义协议绕过验证: ```java // 示例:扩展ExecutorBizClient类 public class CustomExecutorBizClient extends ExecutorBizClient { @Override public ReturnT<String> run(TriggerParam triggerParam) { // 自定义通信逻辑,跳过JWT验证 } } ``` --- ### **注意事项** 1. **安全风险**:跳过验证会暴露执行器接口,可能导致未授权访问,建议仅在测试环境使用。 2. **替代方案**:使用低权限Token替代完全跳过验证,降低风险。 3. **恢复验证**:生产环境务必重新启用安全机制,如通过动态Token或增强IP白名单[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值