前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java框架漏洞_Spring 框架漏洞集合「建议收藏」

java框架漏洞_Spring 框架漏洞集合「建议收藏」

作者头像
全栈程序员站长
发布2022-09-08 10:16:13
2K0
发布2022-09-08 10:16:13
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

虽说是Spring框架漏洞,但以下包含并不仅Spring Framework,Spring Boot,还有Spring Cloud,Spring Data,Spring Security等。

CVE-2010-1622 Spring Framework class.classLoader类远程代码执行

影响版本:SpringSource Spring Framework 3.0.0 – 3.0.2、SpringSource Spring Framework 2.5.0 – 2.5.7

Spring框架提供了一种机制,该机制使用客户端提供的数据来更新对象属性。这个机制允许攻击者修改用于加载对象的类加载器的属性(通过’class.classloader’)。这可能导致任意命令执行,例如,攻击者可以修改URL。由类加载器用来指向攻击者控制的位置。

如何构造这个jar,需要包含以下信息:

/META-INF/spring-form.tld文件:

/META-INF/tags/InputTag.tag

做出这样的替换后,当开发者在controller中将任何一个对象绑定表单,并且最终展示的jsp内容有下面这些:

攻击者访问url,即可触发远程代码执行的效果:

如果服务器大于tomcat6.0.28版本,这样做会把所有的input标签替换掉,导致不能正常显示。需要修改

spring-form.tld,给其中的inputtag改名,name改为inputkxlzx:

在文件中新加入一个tag,叫做input:

InputTag.tag的内容:

访问的时候需要在参数中携带kxlzxcmd

CVE-2013-4152 Spring Framework中的XML外部实体(XXE)注入

影响版本:3.0.0至3.2.3、4.0.0.M1

受影响版本容易受到XML外部实体(XXE)注入的攻击。该SourceHttpMessageConverter处理器不会禁用外部实体解析,这使远程攻击者可以读取任意文件。

当传输xml结构体时,如

外部XML实体- xxe是使用系统标识符定义的,并存在于DOCTYPE标头中。这些实体可以访问本地或远程内容。例如,以下代码包含一个外部XML实体,该实体将获取的内容 /etc/passwd并将其显示给呈现给用户。

其他XXE注入攻击可以访问可能无法停止返回数据的本地资源,这可能会影响应用程序可用性并导致拒绝服务。

CVE-2013-7315 Spring Framework中的XML外部实体

影响版本:3.2.0至3.2.3、4.0.0.M1-4.0.0.M2(Spring MVC)

由于对 CVE-2013-4152和CVE-2013-6429的修复不完整导致。

受影响版本容易受到XML外部实体(XXE)注入的攻击。该SourceHttpMessageConverter处理器不会禁用外部实体解析,这使远程攻击者可以读取任意文件。

当传输xml结构体时,如

外部XML实体- xxe是使用系统标识符定义的,并存在于DOCTYPE标头中。这些实体可以访问本地或远程内容。例如,以下代码包含一个外部XML实体,该实体将获取的内容 /etc/passwd并将其显示给呈现给用户。

其他XXE注入攻击可以访问可能无法停止返回数据的本地资源,这可能会影响应用程序可用性并导致拒绝服务。

CVE-2014-3527 Spring Security验证绕过漏洞

影响版本:

CVE-2014-0097 Spring Security认证绕过

影响版本:Spring Security 3.2.0至3.2.1和3.1.0至3.1.5

CVE-2014-3578 Spring Framework 目录遍历漏洞

影响版本:

在web.xml存在如下情况下存在目录遍历:

访问:

CVE-2016-2173 Spring AMQP中的远程代码执行

影响版本:1.0.0至1.5.4

使用方式:

本来想根据配置来搭一个环境处理,结果环境一直搭不起来,构建各种失败,就先放这个利用poc把。

CVE-2016-4977 SpringSecurityOauth 远程命令执行漏洞

影响版本:2.0.0-2.0.9、1.0.0-1.0.5

漏洞利用POC:

执行命令:

但是此命令执行,不会在页面上显示,只会打印出运行的对象。

如果要执行反弹shell等命令,由于页面HTML编码的原因,SPEL返回值时进行了一次html编码,所以导致取出的 值时会进行一次转义,利用如下脚本加工。

执行输出后再添加:

CNVD-2016-04742 Spring Boot框架SPEL表达式注入漏洞

影响版本:1.1.0-1.1.12、1.2.0-1.2.7、1.3.0

POC:

CVE-2016-6652 Spring Data JPA SQL盲注

影响版本:Spring Data JPA 1.10.2、1.9.4

CVE-2017-4971 Spring WebFlow 远程代码执行漏洞

影响版本:Spring Web Flow 2.4.0 to 2.4.4

使用vulhub搭建环境后,在添加poc执行

无害化payload检测,如果 response header 中出现 vulnerable 头,则有漏洞:

CVE-2017-8045 Spring Amqp中的远程代码执行

影响版本:1.7.4、1.6.11和1.5.7之前的Spring AMQP版本

CVE-2017-8046 Spring Data REST PATCH请求远程执行代码

影响版本:Spring Data REST 2.5.12, 2.6.7, 3.0 RC3之前的版本、Spring Data release trains Kay-RC3之前的版本、Spring Boot 2.0.0M4之前的版本

利用POC执行:

CVE-2018-1258 Spring Security未经授权的访问

影响版本:Spring Framework 5.0.5.RELEASE和Spring Security(任何版本)

暂无详细信息

CVE-2018-1259 具有XMLBeam的Spring DataXXE

影响版本:

CVE-2018-1270 Spring Messaging远程代码执行漏洞

影响版本:Spring Framework 5.0 to 5.0.4。Spring Framework 4.3 to 4.3.14

同样利用vulhub搭建环境,首先我们先拦截connect,查看通过的ws包,点击后会有这么一个请求

从bp中看到来回四个包,其中的内容为如上所示,修改如下请求包

在发送任意消息,即可触发

或者尝试使用vulhub提供的脚本,但是此脚本并不具备通用性,需要修改使用poc

CVE-2018-1271 Spring MVC 目录穿越漏洞

当Spring MVC的静态资源存放在Windows系统上时,攻击可以通过构造特殊URL导致目录遍历漏洞。

此漏洞触发条件较高:

Server运行于Windows系统上

从文件系统提供的文件服务(比如使用file协议,但不是file open)

没有使用CVE-2018-1199漏洞的补丁

不使用Tomcat或者是WildFly做Server

漏洞利用和复现:

CVE-2018-1273 Spring Expression Language SPEL表达式注入漏洞

影响版本:

POC:

CVE-2018-1260 Spring Security Oauth2 远程代码执行

影响版本:

此漏洞和CVE-2016-4977类似

POC:

CVE-2018-15758 spring-security-oauth2权限提升

影响版本:

使用了EnableResourceServer并且用了AuthorizationRequest的话。那么攻击者可以重新发送一次用过的验证请求,或者进行相应参数修改,从而造成权限提升。

例如劫持code,并且篡改其中的scope到all的话:

即授权了读取权限的时候,修改为all就可以获得全部权限。

CVE-2019-3799 Spring Cloud Config Server: 目录遍历

影响版本:Spring-Cloud-Config-Server < 2.1.2, 2.0.4, 1.4.6

构建成功后访问:

![image-20200401100511941](Spring 漏洞.assets/image-20200401100511941.png)

其中路径代表:/{name}/{profile}/{label}/,如下中所显示的json。

CVE-2019-3778 Spring Security OAuth 开放重定向

影响版本:

用户登录后,CLIENT APP执行的以下请求包含REDIRECT_URI参数。 只需添加一个百分号即可触发重定向,而不是通过RedirectMismatchException错误来绕过验证。

例如原始请求如下:

只需要修改为:

这样就不会产生原本的认证错误,而且直接跳转到地址

CNVD-2019-11630 Spring Boot Actuator命令执行漏洞

这个漏洞并不像是单一的问题产生,更像是一个渗透入侵的过程。有很多值得在意的知识点

Spring Boot 1-1.4,无需身份验证即可访问以下敏感路径,而在2.x中,存在于/actuator路径下。

jolokia进行远程代码执行,Jolokia允许通过HTTP访问所有已注册的MBean,并且旨在执行与JMX相同的操作。可以使用URL列出所有可用的MBeans操作:http://127.0.0.1:8090/jolokia/list

Logback库提供的reloadByURL操作使我们可以从外部URL重新加载日志配置,地址如:

通过/env来修改配置

如果Spring Cloud Libraries在类路径中,则**’/ env’**端点允许您修改Spring环境属性。

此属性将Eureka serviceURL修改为任意值。Eureka Server通常用作发现服务器,目标类路径中具有Eureka-Client <1.8.7,则可以利用其中的XStream反序列化漏洞。

其中xstream的内容类似如下:

然后调用’/ refresh’端点。

有一种通过Spring环境属性修改来实现RCE的更可靠方法:

该请求修改了“ spring.cloud.bootstrap.location”属性,该属性用于加载外部配置并以YAML格式解析它。为了做到这一点,我们还需要调用“/refresh”端点。

从远程服务器获取YAML配置时,将使用SnakeYAML库进行解析,该库也容易受到反序列化攻击。有效载荷(yaml-payload.yml)可以通过使用前述的Marshalsec研究生成:

该jar文件的反序列化将触发提供的URLClassLoader的ScriptEngineManager构造函数的执行。jar文件可以在如下地址找到:https://github.com/artsploit/yaml-payload

/env配置

除了关于执行RCE的地方,还有一些设置也很有用。

**spring.datasource.tomcat.validationQuery = drop + table + users-**允许您指定任何SQL查询,它将针对当前数据库自动执行。它可以是任何语句,包括插入,更新或删除。

这种设置只在1.x中,在Spring Boot 2.x中,改为了json格式。

CVE-2019-11269 Spring Security OAuth 开放重定向

此漏洞为CVE-2019-3778的延伸版本,效果一致

影响版本:

CVE-2020-5398 Spring Framework RFD漏洞

影响版本: Spring Framework, versions 5.2.0 to 5.2.3, 5.1.0 to 5.1.13, 5.0.0 to 5.0.16

触发此漏洞的要求可以控制content-disposition文件名和扩展名来下载文件。触发的类型有些类似钓鱼文件。

先准备一个受控制的配置文件等,上传到受信的服务器中,虽然对服务器不造成影响。但是可以在其中注入一些payload。

由于下载的文件名是受前端控制,发送filename的时候可以自己构造文件名下载。

spring对不能识别的文件下载的时候按照json格式来处理,但是url仍然可以使用。

当受害者点击如上的地址时,会下载一个.cmd执行文件。原来spring对这种问题的处理是添加后缀为txt来改变文件的可执行效果。

但是这个设置可以绕过,采用如下形式:

会在表头中闭合造成如下效果:

从而达到绕过限制来下载预先设定好的可执行文件等。

CVE-2020-5405 Spring Cloud Config路径穿越导致的信息泄露

影响版本:spring-cloud-config-server < 2.2.2

poc:

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157019.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档