大家好,又见面了,我是你们的朋友全栈君。
虽说是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