首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring {Boot,Data,Security} 历史漏洞研究

    在 前一篇文章中 介绍过,新建一个 Spring Web (MVC) 应用的过程还是颇为繁琐的,Spring Boot 的出现极大简化了这个过程。...自动配置是 Spring Boot 中的一个重要功能,其模块代码在 spring-boot-project/spring-boot-autoconfigure 中,基于 spring-factories...CNVD-2016-04742 该漏洞是一个 SpEL 表达式注入漏洞,位于 Spring Boot 的默认错误模版中。...{} 包裹的内容替换为 SpEL 解析执行后的内容,但这个替换过程是递归的,也就是说如果解析后的内容仍然包括 {},会被再次解析,从而造成表达式注入。...在实现部分更新时,代码中使用了 SpEL 表达式来解析 path 的值,PoC 如下: $ curl -X PATCH http://localhost:8080/books/1 -H 'Content-Type

    3.3K20

    Spring Boot 缓存Spring Boot缓存

    Spring Boot缓存 《Spring Boot 实战开发》—— 基于 Gradle + Kotlin的企业级应用开发最佳实践 我们知道一个系统的瓶颈通常在与数据库交互的过程中。...本章介绍在 Spring Boot 项目开发中怎样来使用Spring Cache 实现数据的缓存。...Caffeine是使用Java8对Guava缓存的重写版本,在Spring Boot 2.0中将取代Guava。如果出现Caffeine,CaffeineCacheManager将会自动配置。...@Cacheable 其中,注解中的属性值说明如下:  value: 缓存名,必填。  key:可选属性,可以使用SPEL标签自定义缓存的key。...所以我们在项目依赖中添加如下依赖 runtime('mysql:mysql-connector-java') compile('org.springframework.boot:spring-boot-starter-data-jpa

    3.9K30

    SpringBoot整合SpringCache的简单使用和介绍

    spring-boot-starter-data-couchbase 2、开启缓存@EnableCaching...同一类中的本地调用无法通过这种方式被拦截;在本地调用中,此类方法上的缓存注释将被忽略,因为Spring的拦器甚至不会在这种运行时场景中起作用。...表达式,用于使方法缓存成为条件 unless SpEL表达式用于否决方法缓存与condition不同,此表达式是在调用方法后求值的,因此可以引用result sync 如果多个线程试图为同一键加载值,则同步基础方法的调用...由于put操作的性质,在调用方法后将评估此表达式,因此可以引用result unless SpEL表达式用于否决缓存放置操作,默认值为"" ,表示永远不会否决缓存。...由于put操作的性质,在调用方法后将评估此表达式,因此可以引用result allEntries 是否删除缓存内的所有条目。

    73250

    一起来学 SpringBoot 2.x | 第十篇:使用 Spring Cache 集成 Redis

    或者 Redis),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。...添加依赖 在 pom.xml 中添加 spring-boot-starter-data-redis的依赖 org.springframework.boot...属性配置 在 application.properties 文件中配置如下内容,由于Spring Boot2.x 的改动,连接池相关配置需要通过spring.redis.lettuce.pool或者 spring.redis.jedis.pool...其中 # 号代表这是一个 SpEL 表达式,此表达式可以遍历方法的参数对象,具体语法可以参考 Spring 的相关文档手册。...,如果不指定,则缺省按照方法的所有参数进行组合(如:@Cacheable(value="user",key="#userName")) value: 缓存的名称,在 Spring 配置文件中定义,必须指定至少一个

    62010

    SpringBoot整合SpringCache的简单使用和介绍

    spring-boot-starter-data-couchbase 2、开启缓存@EnableCaching...同一类中的本地调用无法通过这种方式被拦截;在本地调用中,此类方法上的缓存注释将被忽略,因为Spring的拦器甚至不会在这种运行时场景中起作用。...表达式,用于使方法缓存成为条件 unless SpEL表达式用于否决方法缓存与condition不同,此表达式是在调用方法后求值的,因此可以引用result sync 如果多个线程试图为同一键加载值,则同步基础方法的调用...由于put操作的性质,在调用方法后将评估此表达式,因此可以引用result unless SpEL表达式用于否决缓存放置操作,默认值为"" ,表示永远不会否决缓存。...由于put操作的性质,在调用方法后将评估此表达式,因此可以引用result allEntries 是否删除缓存内的所有条目。

    58420

    CVE-2025-41243|Spring Cloud Gateway SpEL表达式注入漏洞(POC)

    0x00 前言 Spring是Java EE编程领域的一个轻量级开源框架。 Spring框架的核心特性是可以用于开发任何Java应用程序,但是在Java EE平台上构建web应用程序是需要扩展的。...0x01 漏洞描述 该漏洞的核心在于Spring Cloud Gateway的WebFlux组件对SpEL表达式的安全校验机制存在缺陷,当应用同时满足以下条件时即存在被攻击的风险:使用WebFlux版本的...Gateway、集成Spring Boot Actuator、通过 management.endpoints.web.exposure.include=gateway暴露网关端点,且未对Actuator...攻击者能够访问@environment等敏感bean,读取环境变量中的数据库密码、API密钥等敏感信息,甚至实现远程代码执行,严重威胁系统安全。.../cve-2025-41243 https://blog.z3r.ru/posts/spring-cloud-gateway-spel-vuln/ https://xz.aliyun.com/news/

    67011

    Spring漏洞太难搞?AiPy生成漏洞检测辅助工具

    例如:Spring4Shell(CVE-2022-22965):通过构造恶意请求头触发 SpEL 表达式注入,无需认证即可执行任意代码。...Spring Cloud Gateway 路径遍历(CVE-2022-22947):攻击者可绕过网关限制读取服务器任意文件。...二、Spring 框架的优点强大的生态系统:提供 Spring Boot、Spring Security、Spring Cloud 等一站式解决方案,大幅提升开发效率。...过度依赖注解:可能导致代码可读性下降,尤其在大型项目中难以追踪依赖关系。性能开销:框架本身的反射、代理机制可能引入额外性能损耗(但通常可接受)。...Spring 的优点使其成为企业级开发的首选框架,但缺点(如安全配置复杂性)可能间接导致漏洞。开发者需权衡利弊,通过合理配置和及时更新来规避风险。

    27710

    SpringBoot + SpEL,轻松搞定复杂权限控制,非常优雅!

    在实际的开发中,你会发现,对于权限校验的需求场景是很多的,比如: 只要配置了任何角色,就可以访问 有某个权限就可以访问 放行所有请求 只有超级管理员角色才可以访问 只有登录后才可以访问 在指定时间段内可以访问...SpEL的全称为Spring Expression Language,即Spring表达式语言。是Spring3.0提供的。...)-----只有登录后才可访问 * hasTimeAuth(1,,10)-----只有在1-10点间访问 * hasRole(‘管理员’)-----具有管理员角色的人才能访问 * hasAllRole...... role),那么在注解中,我们就可以这样写@PreAuth("hasAllRole('角色1','角色2')"),需要注意的是,参数要用单引号包括。...SpEL表达式解析将我们注解中的"hasAllRole('角色1','角色2')"这样的字符串,给动态解析为了hasAllRole(参数1,参数1),并调用我们注册类中同名的方法。

    1K10

    spring boot (whitelabel error page SpEL RCE) 漏洞复现

    利用条件: spring boot 1.1.0-1.1.12、1.2.0-1.2.7、1.3.0 至少知道一个触发 springboot 默认错误页面的接口及参数名 利用方法: 步骤一:找到一个正常传参处比如发现访问...步骤二:执行 SpEL 表达式输入 /article?id=${7*7},如果发现报错页面将 7*7 的值 49 计算出来显示在报错页面上,那么基本可以确定目标存在 SpEL 表达式注入漏洞。...: 0x63,0x61,0x6c,0x63 漏洞原理: spring boot 处理参数值出错,流程进入 org.springframework.util.PropertyPlaceholderHelper...类中 此时 URL 中的参数值会用 parseStringValue 方法进行递归解析 其中 ${} 包围的内容都会被 org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration.../tree/master/repository/springboot-spel-rce 环境搭建: 下载上述漏洞环境项目地址,在本地使用IDEA打开该项目,maven下载好相应依赖后,运行项目 1.jpg

    5.2K21

    SpringBoot + SpEL,轻松搞定复杂权限控制,非常优雅!

    在实际的开发中,你会发现,对于权限校验的需求场景是很多的,比如: 只要配置了任何角色,就可以访问 有某个权限就可以访问 放行所有请求 只有超级管理员角色才可以访问 只有登录后才可以访问 在指定时间段内可以访问...SpEL的全称为Spring Expression Language,即Spring表达式语言。是Spring3.0提供的。...)-----只有登录后才可访问 * hasTimeAuth(1,,10)-----只有在1-10点间访问 * hasRole(‘管理员’)-----具有管理员角色的人才能访问 * hasAllRole...... role),那么在注解中,我们就可以这样写@PreAuth("hasAllRole('角色1','角色2')"),需要注意的是,参数要用单引号包括。...SpEL表达式解析将我们注解中的"hasAllRole('角色1','角色2')"这样的字符串,给动态解析为了hasAllRole(参数1,参数1),并调用我们注册类中同名的方法。

    81310
    领券