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

java框架漏洞_Spring 框架漏洞集合「建议收藏」虽说是Spring框架漏洞,但以下包含并不仅SpringFramework,SpringBoot,还有SpringCloud,SpringData,SpringSecurity等。CVE-2010-1622SpringFrameworkclass.classLoader类远程代码执行影响版本:SpringSourceSpringFramework3.0.0-3.0.2、S…

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

虽说是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:

f987fce221d272e00bc37b9af715a83a.png

执行命令:

a13448a2df4d94c6a69d7ca5dd05c3d6.png

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

如果要执行反弹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执行

7a59c576b7df1210d8e7a5acb8e04f89.png

0d0fb24e68c8d2e5ad9cec2643957e00.png

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

3bd59868f41a3f56afc2f5aa0fe55e2b.png

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执行:

b145f9515be6dfae1704f722e9911a70.png

9ab77b14d1065ec9443fdf37d90bca34.png

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包,点击后会有这么一个请求

7933f88887e0e5a0b7c0f35f974be382.png

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

9447edbdbc1641c0bdcb3de11ba53c3c.png

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

d90693198bd436be426716b8e44c686c.png

或者尝试使用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表达式注入漏洞

影响版本:

532c0438fd211a5d3332cf0c0ee41ffc.png

POC:

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

影响版本:

此漏洞和CVE-2016-4977类似

POC:

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

影响版本:

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

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

555693c4fd4e0f60b4606232c3aeff14.png

即授权了读取权限的时候,修改为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。

9dd47099c71a6fb63b84693f6ca1f235.png

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:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • leetcode-19删除链表的倒数第 N 个结点

    leetcode-19删除链表的倒数第 N 个结点原题链接给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <= s

  • navicat premium15激活码(JetBrains全家桶)

    (navicat premium15激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlS3…

  • golang deepcopy_dos copy命令拷贝文件夹

    golang deepcopy_dos copy命令拷贝文件夹Go语言中所有赋值操作都是值传递,如果结构中不含指针,则直接赋值就是深度拷贝;如果结构中含有指针(包括自定义指针,以及切片,map等使用了指针的内置类型),则数据源和拷贝之间对应指针会共同指向同一块内存,这时深度拷贝需要特别处理。目前,有三种方法,一是用gob序列化成字节序列再反序列化生成克隆对象;二是先转换成json字节序列,再解析字节序列生成克隆对象;三是针对具体情况,定制化拷贝。前两种方法虽……

    2022年10月31日
  • java程序日志管理

    java程序日志管理初入软件开发这一行的人,可能对日志管理的概念并不是很明确,大概是由于经验所限,以至于根本还考虑不到这个问题。而从某种意义上来说,日志管理实际上也不需要初入这一行的人来管,他们只需要负责实现自己的主要业务逻辑和功能就好了。我当初刚入行的时候就有很长一段时间完全不用去关心日志,到后来偶尔涉及到的时候,也都是从其他地方采用cv大法直接搬用。不过,随着工作时间的变化,随着手头上任务重要程度的变化

  • 使用RadControls的RadMenu控件开发系统菜单

    使用RadControls的RadMenu控件开发系统菜单关于菜单这个话题我想应该是不讲则懂,所以本文不会多讲这些概念,则重关注RadControls控件中的RadMenu控件的使用,结合数据库来开发一个系统菜单。一、数据库设计这里我就使用Access作为示例数据库,详细见下图:表字段依次为:自动编号、菜单编码、菜单名称、请求地址、菜单上显示的图片地址、快捷键(RadMenu控件支持)、菜单顺序、菜单级限、是否为末级和父菜单编码。整个设计中…

  • pycharm 格式化json_u盘文件被隐藏怎么恢复

    pycharm 格式化json_u盘文件被隐藏怎么恢复CTRL+ALT+L

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号