迟来的SpringMVC 框架RCE分析。本文章简单介绍了SpringMVC框架请求处理流程,并以此对漏洞进行了分析与复现。
文章目录 基本 ClassPathXmlApplicationContext 构造器 设置配置文件路径 Environment接口 Profil...
这里便是bean初始化的核心逻辑。源码比较复杂,分开说。以getBean(String name)为例。AbstractBeanFactory.getBean:
例如: 找到Spring-core的目录: 会发现有很多版本的,选择一个符合自己的进去。
.*) 009 --> 010 011 org.springframework 012 spring-core...-- 017 Expression Language (depends on spring-core) 018 Define this if you use Spring Expression...-- 027 Bean Factory and JavaBeans utilities (depends on spring-core) 028 Define this if you...-- 047 Application Context (depends on spring-core, spring-expression, spring-aop, spring-beans)...-- 078 JDBC Data Access Library (depends on spring-core, spring-beans, spring-context, spring-tx
我们发现maven最后选择的是4.3.16.RELEASE的spring-beans和5.2.4.RELEASE的spring-core。那maven到底是如何来解决jar包版本冲突问题的呢?...例如这个项目中直接依赖了spring-context和spring-beans两个jar包,这两个jar包所依赖的spring-core就属于传递依赖包。...5.2.4.RELEASE [传递依赖路径] -> spring-beans 4.3.16.RELEASE 会依赖一个 spring-core 4.3.16.RELEASE [传递依赖路径] -> spring-core...中所依赖的spring-core了。...,由于要和4.3.16.RELEASE声明优先原则而保持一致, 所以最终引入项目的spring-core的jar包版本也是4.3.16.RELEASE。
+- org.springframework:spring-beans:jar:5.2.7.RELEASE:compile [INFO] | | \- (org.springframework:spring-core...:jar:5.2.7.RELEASE:compile - omitted for duplicate) [INFO] | +- org.springframework:spring-core:jar:...org.springframework:spring-expression:jar:5.2.7.RELEASE:compile [INFO] | \- (org.springframework:spring-core...比如上面有一行最后写着omitted for conflict with 5.2.7.RELEASE,表示spring-core 5.2.0版本不会被项目引用,而spring-core 5.2.7版本会被项目引用...:jar:5.2.0.RELEASE:compile - omitted for duplicate) [INFO] | \- org.springframework:spring-core:jar:
spring-boot-starter-actuator --- spring-boot-starter 、spring-boot-actuator 、spring-core spring-boot-starter-amqp...、spring-aop 、AspectJ Runtime 、AspectJ Weaver 、spring-core spring-boot-starter-batch --- spring-boot-starter...、HSQLDB 、spring-jdbc 、spring-batch-core 、spring-core spring-boot-starter-elasticsearch --- spring-boot-starter...、 spring-data-elasticsearch、 spring-core、 spring-tx spring-boot-starter-gemfire --- spring-boot-starter...、 spring-tx、 spring-data-rest-webmvc spring-boot-starter-data-solr --- spring-boot-starter、 Solrj、 spring-core
spring-boot-starter-parent中无Java代码,它的dependencyManagement中,spring-core依赖排除commons-logging依赖,如下所示: org.springframework spring-core...spring-boot-starter-logging org.springframework spring-core
2:使用框架呢,第一步肯定是导包了,而SpringMVC框架算是Spring的子项目吧,直接去Spring的libs里面找包就行了,开发步骤如下所示: 2.1:第一步:导包,导入Spring-core...(IoC)包 ,Spring-web包,Spring-mvc的包,如下所示: commons-logging-1.1.3.jar【Spring-core(IoC)包】 spring-beans...-3.2.5.RELEASE.jar【Spring-core(IoC)包】 spring-context-3.2.5.RELEASE.jar【Spring-core(IoC)包】 spring-core...-3.2.5.RELEASE.jar【Spring-core(IoC)包】 spring-expression-3.2.5.RELEASE.jar【Spring-core(IoC)包】 spring-web
,但是由于版本不同也导致了spring-core有两个版本,这就是Maven的JAR包冲突,但是从左侧可以确定Maven选择了5.x版本的spring-core。...就是传递依赖 直接在项目中加入spring-core的依赖,版本为4.2.8.RELEASE,不同于spring-context和spring-bean包含的spring-core的版本 可以看出Maven...选择的是直接引入的spring-core的版本,既没有选择spring-context也没有选择spring-bean 直接导入spring-core,所依赖的版本就变成了直接导入的版本,没有直接导入的话就是用间接传递依赖的版本...将4.x版本的spring-core排除掉 exclusion标签中不用写版本号默认使用上层的版本号。...此时,Spring-core就变成5.3.16版本的了 推荐使用第三种方式 完成Maven项目搭建 pom文件中添加Maven依赖 <!
.*) --> org.springframework spring-core</...-- Bean Factory and JavaBeans utilities (depends on spring-core) Define this if...-- Application Context (depends on spring-core, spring-expression, spring-aop, spring-beans...-- JDBC Data Access Library (depends on spring-core, spring-beans, spring-context, spring-tx...(depends on spring-core, spring-beans, spring-context, spring-tx) Define this if you need
图3 Log4j-core组件层级依赖图 图4 Spring-core组件层级依赖图 图3、图4分别展示了Log4j和Spring的组件层级依赖。...图5 Log4j-core依赖组件传播影响力分布图 图6 Spring-core依赖组件传播影响力分布图 图5、图6分别展示了Log4j和Spring的组件依赖传播影响力分布图,其中标明了传播影响力排名前...图8 Spring-core最新组件依赖网修复全景图 “涅槃”系统对Spring漏洞的修复现状也做了同样的统计分析,如图8所示,共计9.7万个节点和16万条边,覆盖了Spring-core的全部版本。...图中冷色系(青、蓝、绿等)表示已修复版本,只有少量显示,可见由于Spring漏洞爆发时间尚短,目前整个Spring-core软件供应链中大部分组件仍未被修复。...图10 Spring-core直接依赖组件修复比例变化动图 4 结 语 本文初步展示了“涅槃”系统对Java语言生态的软件供应链安全分析,包含对整个生态的全景依赖分析和展示,揭示出Java语言生态中影响力最大的组件
下载spring5.0.4源码 用gradle 编译生成了 spring-jcl spring-core spring-beans 3个eclipse 项目 但是 spring-core 下面的一个
.Spring核心依赖 --> org.springframework spring-core...spring-test 4.3.7.RELEASE 一共四个方面: 1)spring核心依赖 spring-core
下面介绍这5个部分的jar以及依赖关系 core core部分包含4个模块 spring-core:依赖注入IoC与DI的最基本实现 spring-beans:Bean工厂与bean的装配 spring-context...因为spring-core依赖了commons-logging,而其他模块都依赖了spring-core,所以整个spring框架都依赖了commons-logging,如果有自己的日志实现如log4j
idea_breakpoint_not_use 前言 某个多模块项目中使用多个版本的 Spring,如 Spring 4,Spring 5,在使用 IDEA Debug 过程中发现,Spring 部分 jar 如 spring-core...当 IDEA 进入 spring-core 断点时,打开 spring-context 任意源码,可以发现 IDEA 提示 source code does not match bytecode。
jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar包一共是19个 下面介绍这5个部分的jar以及依赖关系 core l core部分包含4个模块 l spring-core...Bean工厂与bean的装配 l spring-context:spring的context上下文即IoC容器 l spring-expression:spring表达式语言 它们的完整依赖关系 因为spring-core...依赖了commons-logging,而其他模块都依赖了spring-core,所以整个spring框架都依赖了commons-logging,如果有自己的日志实现如log4j,可以排除对commons-logging
jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar包一共是19个 下面介绍这5个部分的jar以及依赖关系 core core部分包含4个模块 spring-core...因为spring-core依赖了commons-logging,而其他模块都依赖了spring-core,所以整个spring框架都依赖了commons-logging,如果有自己的日志实现如log4j
领取专属 10元无门槛券
手把手带您无忧上云