Spring Data Rest 远程命令执行漏洞 CVE-2017-8046
影响范围 Spring Data REST 2.5.0 - 2.5.11 Spring Data REST 2.6.0 - 2.6.8 Spring Data REST 3.0.0.RC1 - 3.0.0.RC3 Spring Boot 1.5.0 - 1.5.8 Spring Boot 1.4.x 及更早版本 漏洞类型SpEL 表达式注入 操作系统限制无 配置要求默认配置 漏洞利用命令执行,进行反弹 shell,写入木马 利用原理Spring Data REST 支持通过 PATCH 请求对资源进行局部更新,PATCH 请求包含一个 path 字段,用于指定修改的对象属性,后端接受请求时,Spring 会将 path 字段直接传递给 SpeExpressionParser 解析,框架没用对 path 进行安全过滤或合法性检验,攻击者可以在 path 字段构造 SpEL 表达式实现代码执行 漏洞复现用现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vulhub/vulhub.git#进入漏洞目录c...
Spring Data Commons 远程命令执行 CVE-2018-1273
影响范围 Spring Data Commons 1.13 - 1.13.10 Spring Data Commons 2.0 - 2.0.5 Spring Boot 1.5.0 - 1.5.11 Spring Boot 2.0.0 - 2.0.1 漏洞类型SpEL 表达式注入 操作系统限制无 配置要求默认配置 漏洞利用命令执行,进行反弹 shell,写入木马 利用原理Spring MVC 中,当用户通过 POST 表单提交数据,Spring Data 会尝试将请求参数绑定到后端 Java 对象或 Map 中,Spring Data 允许参数名通过方括号语法定位集合或 Map 中的元素(例如 tags [0] 或 users [‘admin’]),当 Spring Data 处理方括号 2 的参数名时候,会调用 MapDataBinder 进行解析,而系统直接调用 SpEL 引擎来解析方括号内容且不做过滤,攻击者可以通过参数名的方括号注入恶意 SpEL 代码实现命令执行 漏洞复现用现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone http...
Spring Security OAuth 远程代码执行漏洞 CVE-2016-4977
影响范围 Spring Security OAuth 1.0.0 - 1.0.5 Spring Security OAuth 2.0.0 - 2.0.9 Spring Security OAuth 2.0 - 2.0.14 Spring Security OAuth 2.1 - 2.1.1 Spring Security OAuth 2.2 - 2.2.1 Spring Security OAuth 2.3 - 2.3.2 漏洞类型SpEL 表达式注入 操作系统限制无 配置要求默认配置 漏洞利用命令执行,进行反弹 shell,写入木马 利用原理当授权请求中的 scope 参数不合法,Spring 会调用默认的 WhitelabelApprovalEndpoint 生成错误页面,Spring 视图解析器解析错误模板,将 ${errorSummary} 占位符替换成含用户输入的错误描述字符串,攻击者可以构造恶意 payload 带入到页面内容,Spring 渲染引擎未能识别用户输入数据,会将 ${} 包裹的内容再次交给 SpEL 解析器处理,敏感命令得以执行 漏洞复现用现成的 vu...
Spring Cloud Gateway 远程代码执行漏洞 CVE-2022-22947
影响范围 Spring Cloud Gateway 3.1.x - 3.1.1 Spring Cloud Gateway 3.0.x - 3.0.7 旧版本 / 停止维护版本 漏洞类型SpEL 表达式注入 操作系统限制无 配置要求默认配置 漏洞利用命令执行,进行反弹 shell,写入内存马(删除路由后还能驻留在内存中) 利用原理Spring Cloud Gateway 提供了一个管理端点(/actuator/gateway/routes),允许管理员通过 HTTP 请求动态地添加、删除或修改路由配置,该端点暴露且未受保护,攻击者可以发送 POST 请求来定义新的路由,并在 filters 参数注入恶意代码,网关价值配置时候,会调用 ShortcutConfigurable 接口,该接口会将 filters 参数的值传给 SpEL 解析引擎。利用链分两个阶段,第一阶段为存储阶段,攻击者通过 T () 操作符调用 Java 环境敏感类来构造恶意代码,此时恶意代码仅仅作为字符串存在网关内存配置;第二阶段为触发阶段,加载过程网关会解析恶意表达式,解析成功后 Runtime.exec()...
Spring Cloud Function 远程代码执行漏洞 CVE-2022-22963
影响范围 Spring Cloud Function 3.0.0 - 3.1.6 Spring Cloud Function 3.2.0 - 3.2.2 漏洞类型 SpEL 表达式注入 操作系统限制无 配置要求默认配置 漏洞利用命令执行,进行反弹 shell,写入木马 利用原理Spring Cloud Function 引入 RoutingFunction 功能,允许开发者根据特定条件动态将请求分发给不同函数执行,框架允许通过 HTTP Header 来指定路由逻辑。当请求到达时,RoutingFunction 会检查是否存在特定 HTTP 请求头:spring.cloud.function.routing-expression,如果存在该 Header,框架会将其值作为 SpEL 表达式处理,攻击者可以构造恶意 payload 注入到 spring.cloud.function.routing-expression 属性值,服务器处理 POST 请求时候,识别到恶意 payload 就会触发解析,执行恶意命令。POST 请求主体不能为空,若为空,Spring 的 Messag...
Spring Security 认证绕过漏洞 CVE-2022-22978
影响范围 Spring Security 5.5.0 - 5.5.6 Spring Security 5.6.0 - 5.6.3 以及更早的停止维护版本。 漏洞类型权限绕过 操作系统限制无 配置要求 Spring Security 默认使用 AntPathRequestMatcher 正则表达式使用了点号(.)通配符 未显式设置 caseInsensitive 或 DOTALL 参数 漏洞利用越权获取敏感信息 利用原理RegexRequestMatcher(正则匹配器)初始化未开启 DOTALL 模式(开启后点号匹配范围扩大,可以匹配包括换行符在内的所以字符),安全框架用正则匹配路径,由于. 无法识别 %0a,导致正则引擎判定匹配失败,即认为加入 %0a 不属于受保护的范围,绕过了权限检验,从而能够访问敏感业务信息 漏洞复现用现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vulhub/vulhub.git#进入漏洞目录cd vulhub/spring/CVE-2022-22978#拉取镜像doc...
Spring Framework 远程代码执行漏洞 CVE-2022-22965
影响范围 Spring Framework < 5.3.18 Spring Framework < 5.2.20 漏洞类型参数绑定漏洞 操作系统限制无 配置要求无 漏洞利用执行命令,可以进行反弹 shell 利用原理利用 Java 特性,对象互通且允许通过点号. 访问属性的属性,在 JDK9 中引入了 Module,Spring 没防住 class.module.classLoader,可以直接通过参数访问到 Tomcat 的类加载器。在 Tomcat 中有一个 AccessLogValve 组件负责记录访问日志,可以通过参数绑定来修改其配置,directory(日志存放目录)、prefix(日志文件名)、suffix(日志后缀)、fileDateFormat(日期后缀)、pattern(日志格式),将目录修改到 Web 根目录,将日志文件名确定,日志后缀改成.jsp,将日期后缀清空,防止文件名额外添加上日期,将 Java 恶意代码注入到日志格式中。最后通过日志功能,当攻击者发送请求,将设定好的文件存放到 Web 根目录,内容即构造的恶意 payload。patte...