【组件攻击链】一文看懂Spring全家桶各类RCE漏洞

网络安全Spring框架漏洞总结(一) Spring简介 SpringJava EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用,实现敏捷开发的应用型框架。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。 2009年9月Spring 3.0 RC1发布后,Spring就引入了SpEL (Spring Expr 阅读详情

image

一、Spring全家桶简介

Spring发展到现在,全家桶所包含的内容非常庞大,这里主要介绍其中关键的5个部分,分别是spring framework、 springboot、 spring cloud、spring security、spring mvc。其中的spring framework就是大家常常提到的spring, 这是所有spring内容最基本的底层架构,其包含spring mvc、springboot、spring core、IOC和AOP等等。Spring mvc就是spring中的一个MVC框架,主要用来开发web应用和网络接口,但是其使用之前需要配置大量的xml文件,比较繁琐,所以出现springboot,其内置tomcat并且内置默认的XML配置信息,从而方便了用户的使用。下图就直观表现了他们之间的关系。

image

而spring security主要是用来做鉴权,保证安全性的。Spring Cloud基于Spring Boot,简化了分布式系统的开发,集成了服务发现、配置管理、消息总线、负载均衡、断路器、数据监控等各种服务治理能力。
整个spring家族有四个重要的基本概念,分别是IOC、Context、Bean和AOP。其中IOC指控制反转,在spring中的体现就是将对象属性的创建权限回收,然后统一配置,实现解耦合,便于代码的维护。在实际使用过程中可以通过autowired注解,不是直接指定某个类,将对象的真实类型放置在XML文件中的bean中声明,具体例子如下:

<bean name="WelcomeService" class="XXX.XXX.XXX.service.impl.WelcomeServiceImpl"/>

image.png

Spring将所有创建或者管理的对象称为bean,并放在context上下文中统一管理。至于AOP就是对各个MVC架构的衔接层做统一处理,增强了代码的鲁棒性。下面这张图就形象描述了上述基本概念。

image

image

二、各子组件介绍

Spring发展至今,整个体系不断壮大,子分类非常庞大,这里只对本次涉及的一些组件做简单的介绍。

首先是Spring Websocket,Spring内置简单消息代理。这个代理处理来自客户端的订阅请求,将它们存储在内存中,并将消息广播到具有匹配目标的连接客户端。Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,其主要目标是使数据库的访问变得方便快捷。Spring Data Commons是Spring Data下所有子项目共享的基础框架,Spring Data家族中的所有实现都是基于Spring Data Commons。简单点说,Spring Data REST把我们需要编写的大量REST模版接口做了自动化实现,并符合HAL的规范。Spring Web Flow是Spring MVC的扩展,它支持开发基于流程的应用程序,可以将流程的定义和实现流程行为的类和视图分离开来。

image

三、使用量及使用分布

根据全网数据统计,使用Spring的网站多达80万余,其中大部分集中在美国,中国的使用量排在第二位。其中香港、北京、上海、广东四省市使用量最高。通过网络空间搜索引擎的数据统计和柱状图表,如下图所示。

image

image

四、漏洞背景介绍(SpEL使用)

1、SpEL是什么

SpEL是基于spring的一个表达式语言,类似于struts的OGNL,能够在运行时动态执行一些运算甚至一些指令,类似于Java的反射功能。就使用方法上来看,一共分为三类,分别是直接在注解中使用,在XML文件中使用和直接在代码块中使用。

2、SpEL能做什么

● 基本表达式

包括逻辑运算,三目运算和正则表达式等等。

● 类操作表达式

对象方法调用,对象属性引用,自定义函数和类实例化等等。

● 集合操作表达式

字典的访问,投影和修改等等。

● 其他表达式

模板表达式

3、SpEL demo

基于注解的SpEL

可以结合sping的@Value注解来使用,可以直接初始化Bean的属性值

image.png

在这种情况下可以直接将test的值初始化为AAA

此外,还有很多其他注解的使用方式,可以结合上面提到的表达式的四种使用模式。

基于XML的SpEL

可以直接在XML文件中使用SpEL表达式如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
       xsi:schemaLocation="http://www.springframework.org/schema/beans       
                        http://www.springframework.org/schema/beans/spring-beans.xsd">    
    <bean id="world" class="java.lang.String">      
      <constructor-arg value="#{' World!'}"/>    
    </bean>    
    <bean id="hello" class="java.lang.String">     
       <constructor-arg value="#{'Hello'}#{world}"/
从零搭建AMESim与Matlab/Simulink联合仿真环境(2024版软件配置详解) 本文详细介绍了2024年最新版AMESim与Matlab/Simulink联合仿真环境的搭建与配置方法。从软件安装顺序、路径设置到编译器配置,逐步指导如何实现高效联合仿真,特别强调了版本兼容性和环境变量设置等关键细节,帮助工程师快速解决常见问题并优化仿真性能。 阅读详情

相关推荐

spring框架漏洞整理(Springboot漏洞)

2016年爆出的一个漏洞Springboot漏洞利用条件 至少知道一个触发 springboot 默认错误页面的接口及参数名 利用方法 Springboot漏洞步骤一:找到一个正常传参处 比如发现访问/article?id=xxx,页面会报状态码为 500 的错误:Whitelabel Error Page,则后续 payload 都将会在参数 id 处尝试。 Springboot漏洞步骤二:执行 SpEL 表达式

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 4904

组件攻击链Spring全家各类RCE漏洞浅析

尽管近期没有出现相关漏洞,但这些高风险漏洞依然不可忽视。本文涉及漏洞大多不需要复杂的配置就可以直接攻击成功,执行任意代码,危害较大。故开发者在使用Spring进行开发的过程中,一定要关注其历史风险点,规避高危漏洞,减少修改不必要的配置信息。

further_eye的博客 3523

spring框架漏洞整理(Spring Boot Actuator命令执行漏洞)

spring框架漏洞整理之CNVD-2019-11630 Spring Boot Actuator命令执行漏洞 https://www.veracode.com/blog/research/exploiting-spring-boot-actuators# 这个漏洞并不像是单一的问题产生,更像是一个渗透入侵的过程。有大概5个值得在意的知识点 1、Spring Boot 1-1.4,无需身份验证即可访问以下敏感路径,而在 2.x 中,存在于 /actuator 路径下。 /dump-显示线程转储(包括堆栈跟踪

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 1452

spring框架历史漏洞复现

复现了vulhub上的spring漏洞,基本上都是由于引用了spEL(spring的表达式语言),造成了未授权的恶意参数注入,表达式注入,spEL表达式解析引起的RCE等问题,。

weixin_54431413的博客 4404

2023HVV|WPS Office 远程代码执行漏洞(RCE)

Office中的WebExtension(通常称为Office插件或Office应用程序) 是一种用于扩展Microsoft Office功能的技术。简单理解就是Office内置了一个浏览器,可以解析html/javascript/css代码,本次的漏洞,就是WPS在处理WebExtension时,未能正确的处理javascript代码,造成了溢出RCE(可参考之前Chrome被曝出的RCE漏洞、微信Windows版

m0_60884805的博客 1289

RCE代码及命令执行(详解)

借鉴链接:https://www.cnblogs.com/networkroom/p/16395024.html当然还有很多的其他函数,可以自学百度搜索。在low级别中是接受了用户输入的IP,服务器通过操作性的不同情况执行ping命令,并且Low级别中并未对输入的内容进行过滤。在Medium级别中是对“&&”与“;”进行了过滤,那么这里可以不使用这两个破解符即可,使用别的,比如我之前提到的“|”或者“&”。在High级别中是对“| ”进行过滤了,这里不知道是作者无意间敲了一个空格还是故意的。

剁椒鱼头没剁椒的博客 6037

30)【RCE集合】RCE漏洞的原理、出现地方、相关命令、函数解析、利用详细的过程

详细理解RCE漏洞

3102

组件攻击链一文看懂 Spring 全家各类 RCE 漏洞

Spring 发展到现在,全家所包含的内容非常庞大,这里主要介绍其中关键的 5 个部分,分别是 spring frameworkspringbootspring cloud、spring security、spring mvc。其中的 spring framework 就是大家常常提到的 spring, 这是所有 spring 内容最基本的底层架构,其包含 spring mvc、springbootspring core、IOC 和 AOP 等等。Spring mvc 就是 spring 中的一

m0_67698950的博客 565

SpringBoot历史漏洞复现

Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开 箱即用的模块,如:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、 Spring Test,这些模块缩短应用程序的开发时间,提高了应用开发的效率例如,在Java Web开发的早 期阶段,我们需要编写大量的代码来将记录插入到数据库中。

weixin_53747497的博客 9305

spring常见漏洞总结

Spring的英文翻译为春天,可以说是给Java程序员带来了春天,因为它极大的简化了开发。得出一个公式Spring=春天=Java程序员的春天=简化开发。最后的简化开发正是Spring框架带来的最大好处。Spring是一个开放源代码的设计层面框架,它是于2003年兴起的一个轻量级的Java开发框架。由RodJohnson创建,其前身为Interface21框架,后改为了Spring并且正式发布。Spring是为了解决企业应用开发的复杂性而创建的。...

hongduilanjun的博客 5755

Spring框架常见漏洞

本篇文章主要是内容常见Spring漏洞的解析以及理解。

本散修的一些学习心得与笔记,道友请自便。 1800

Spring 漏洞分析

http://drops.wooyun.org/tips/2892 Spring框架问题分析 tang3·2014/09/01 11:29·来自乌云知识库 0x00 概述 Spring作为使用最为广泛的Java Web框架之一,拥有大量的用户。也由于用户量的庞大,Spring框架成为漏洞挖掘者关注的目标,在Struts漏洞狂出的如今,Spring也许正在被酝酿一场大的危机。 ...

weixin_30576859的博客 576

Spring Framework 历史漏洞研究

本文的主要目标是分析、总结、归纳历史上出现过的 Spring 框架漏洞,从而尝试找出其中的潜在模式,以达到温故知新的目的。当然作为一个 Java 新手,在直接分析漏洞之前,还是会先从开发者的角度去学习 Spring 中的一些核心概念,从而为后续的理解奠定基础。

有价值炮灰 918

SpringBoot历史漏洞复现_springboot漏洞,2024年最新真的醉了

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~(img-yTSj4IpJ-1713175561720)]//转化的格式base。//反弹shell脚本。

m0_62289824的博客 3790

spring常见漏洞(前言)

Spring的英文翻译为春天,可以说是给Java程序员带来了春天,因为它极大的简化了开发。得出一个公式:Spring = 春天 = Java程序员的春天 = 简化开发。最后的简化开发正是Spring框架带来的最大好处。Spring是一个开放源代码的设计层面框架,它是于2003 年兴起的一个轻量级的Java 开发框架。由Rod Johnson创建,其前身为Interface21框架,后改为了Spring并且正式发布。Spring是为了解决企业应用开发的复杂性而创建的。

星星我啊,已经很努力在学习了, 有人一起学习吗?Ziansec-1 748

spring常见漏洞(1)

Spring Security OAuth RCE(cve-2016-4977),是为Spring框架提供安全认证支持的一个模块,在7月5日其维护者发布了这样一个升级公告,主要说明在用户使用来处理错误时,攻击者在被授权的情况下可以通过构造恶意参数来远程执行命令。漏洞的发现者在10月13日公开了该漏洞的挖掘记录。

星星我啊,已经很努力在学习了, 有人一起学习吗?Ziansec-1 898

Spring漏洞合集

Spring 框架是一个功能强大的 Java 应用程序框架,旨在提供高效且可扩展的开发环境。其本身也是模块化的,应用程序可以选择所需要的模块。这些模块缩短应用程序的开发时间,提高了应用开发的效率例如,在Java Web开发的早 期阶段,程序员需要编写大量的代码来将记录插入到数据库中。但是通过使用Spring JDBC模块的 JDBCTemplate,我们可以将操作简化为几行代码,所以spring应用十分广泛,漏洞较为常见,必须掌握。

LainWith的博客 3741

AI奶牛TMR智能饲喂机器人 Qt信创完整项目( 统信/麒麟国产系统直接编译)

内置**犊牛、育成牛、围产牛、泌乳牛、干奶牛**5套标准化饲喂配方;+" 饲喂批次完成|牛群:"+grpText+"|投喂饲料:"+QString::number(ft)+"吨|剩料:"+QString::number(st)+"吨|异常牛:"+QString::number(abCow);cv::putText(frame,"霉变变质饲料禁止饲喂",cv::Point(20,40),cv::FONT_HERSHEY_SIMPLEX,0.7,cv::Scalar(0,0,255),2);

寒寒豆豆软件公司的博客 150

3相PFCcircuit.rar_3相PFC+PFC_forth61l_pfcmatlab_三相PFC仿真_对初学者很有用

三相PFCmatlab仿真,双环控制,对于初学者有很好的参考价值

上一篇: 【网络安全】XSS盲打实战案例:某网页漫画
下一篇: 【渗透技术】一个渗透测试工具人是怎样操作的
IT老涵
博客等级 码龄5年 4555粉丝 414原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值