eroot(荣耀60seroot)

更新时间:2023-03-01 17:21:22 阅读: 评论:0

漏洞描述

Spring 是一个开放源代码的设计层面框架,是为了解决企业应用开发的复杂性而创建的。它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。

当用到 Spring 的参数绑定功能,同时 Spring core 运行在 jre/jdk/openjdk 9 以上的版本时, class 新增了 getModlue()方法,可以通过其来获取 classLoader,从而绕过现有的 spring 的 java.lang.class.classLoader 黑名单防御机制,达到调用 classLoader 的目的,配合不同的 Loader 的 tter、getter 方法,达到命令执行或任意文件读写等一系列效果。

例如:环境中使用的 tomcat 的 webappsclassloader,通过 get 方法依次获取到

https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/loader/Web appClassLoaderBa.html#getResources()

https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/WebResourc eRoot.html#getContext()

https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/Container. html#getParent()

https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/Container. html#getPipeline()

https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/Pipeline.h tml#getFirst()

getFirst 获取到的 Valve 为

https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/valves/Acc

essLogValve.html 从而进行文件写入操作。

漏洞利用条件

1.JDK/JRE/OpenJDK 版本: 9 及以上;

2.使用了 Spring-beans 包;

3.使用了 Spring 参数绑定;

4.Spring 参数绑定使用的是非基本参数类型,例如一般的 POJO 即可;

注:不是 java+Spring 就一定存在漏洞,还要根据具体业务代码来进一步判断。

已知受影响应用

Tomcat

其他暂未确定

修复建议

官方暂时还未进行任何更新,临时建议:

1.在应用组全局搜索@InitBinder 注解,看看方法体内是否调用dataBinder.tDisallowedFields 方法,如果发现此代码片段的引入,则在原来的黑名单中添加{"class.*","Class.*","*.class.*","*.Class.*"}。(注:如果此代码片段使用较多,则需要每个地方都追加)

2.在应用系统的项目包下新建以下全局类,并保证这个类被 Spring 加载到(推荐在Controller 所在的包中添加)。完成类添加后,需对项目进行重新编译打包和功能验证测试,并重新发布项目。

即时检测

检测逻辑:检查当前系统中是否存在 spring-beans jar 包(包含 SpringBoot 子包以及 war 包启动方式)及关联 java 进程版本是否大于等于 9。

by【青藤】

本文发布于:2023-02-28 20:12:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167766248278706.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:eroot(荣耀60seroot).doc

本文 PDF 下载地址:eroot(荣耀60seroot).pdf

标签:荣耀   eroot   seroot
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|