网站开发实训内容,杭州网络游戏公司排名,北京网络网站建设,wordpress v电影一、前言
因近期安全扫描#xff0c;发现java后端应用涉及多个引用组件版本过低#xff0c;涉及潜在漏洞利用风险#xff0c;特记录相关处理升级处理过程#xff0c;以备后续确认#xff1b;
二、升级处理过程
2.1、Java类应用内置Spring Boot版本升级
Spring Boot是一…一、前言
因近期安全扫描发现java后端应用涉及多个引用组件版本过低涉及潜在漏洞利用风险特记录相关处理升级处理过程以备后续确认
二、升级处理过程
2.1、Java类应用内置Spring Boot版本升级
Spring Boot是一款基于Spring框架的快速开发框架,它提供了一系列的开箱即用的功能和组件但升级过程中可能会有一些特定于项目的配置或依赖项也需要进行对应的适配调整。版本升级前在本地/测试环境中进行充分的测试和验证确保没有引入新的兼容性问题或其他不可预见的错误;
目标将 Spring Boot 升级到 2.5.15、2.6.15、2.7.12、3.0.7 及以上版本否则涉及Spring Boot 拒绝服务漏洞(CVE-2023-20883)参考过程如下
主要过程如下 1、确定当前的Spring Boot版本可以在项目的pom.xml文件中查看当前使用的Spring Boot版本号。有的里面使用环境变量引用可直接看依赖BOOT-INF/lib/spring-boot-2.7.9.jar 包 2、查看官方文档访问Spring Boot的官方文档网站https://docs.spring.io/spring-boot/docs/和版本发布对比需要升级的目标版本查看最新的发布版本和更新的内容。 3、更新pom.xml文件/依赖的spring-boot包将pom.xml文件中的Spring Boot版本号改为最新的/需要的版本号。可以通过在Maven仓库中搜索最新的Spring Boot版本号然后将其替换掉pom.xml文件中原有的版本号。 4、解决依赖冲突升级Spring Boot版本可能会导致一些依赖冲突的问题。可以使用Maven的dependencyManagement元素来解决这些问题。在pom.xml文件中添加dependencyManagement元素并将冲突的依赖项的版本号设置为所需的版本号。 5、运行测试用例在升级完成后运行项目的测试用例确保升级后的版本没有引入新的bug或问题后运行mvn package命令打出jar包即发新的包进行部署 6、部署和运行在升级完成后重新构建项目并将其部署到服务器上进行测试和生产环境的运行。 另外可参考spring boot中spring框架的版本升级
2.2、Java类应用内置 MyBatis 组件升级
MyBatis是美阿帕奇Apache软件基金会的一款优秀的持久层框架。 MyBatis存在远程代码执行漏洞该漏洞源于错误处理对象流的反序列化。攻击者可利用漏洞将对象反序列化后存储至redis服务器中。
目标对现场后台应用组件 MyBatis 升级到 3.5.6 及以上版本下载地址https://github.com/mybatis/mybatis-3/releases现场BOOT-INF/lib/mybatis-3.4.6.jar否则涉及MyBatis远程代码执行漏洞(CVE-2020-26945)升级过程同上修改版本调试无报错后重新发包部署替换升级到最新版Mybatis 3.5.15
2.3、Apache Commons FileUpload 组件升级
Apache Commons FileUpload 包可以提供强大的、高性能的、文件上传能力。 Apache Commons FileUpload 存在安全漏洞由于1.5 版本之前的Commons FileUpload对处理的请求部分的数量没有限制攻击者有可能通过恶意上传或一系列上传触发 DoS。低于1.5版本的涉及Apache Commons FileUpload 拒绝服务漏洞(CVE-2023-24998)
目标将 Commons FileUpload 升级到 1.5 及以上版本下载地址现场版本BOOT-INF/lib/commons-fileupload-1.2.2.jar该组件依赖java版本现场Java版本 “1.8.0_391”FileUpload组件还依赖于commons IO组件现场版本BOOT-INF/lib/commons-io-2.5.jar。
注在Spring Boot开发的Web应用程序中处理文件上传在早期的Spring Boot版本中通常使用 commons-fileupload库来处理文件上传。然而随着时间的推移commons-fileupload库已经过时不再推荐 使用Spring Boot社区推荐使用commons-fileupload2-jakarta库来代替旧的commons- fileupload库。 1、首先确定当前使用的 Apache Commons FileUpload 版本。可以在项目的依赖管理文件如 Maven 或 Gradle中查看相关信息。 2、打开官方网站 https://commons.apache.org/proper/commons-fileupload/index.html并导航到 “Download” 页面。根据需求选择最新的版本号点击对应的下载链接获取 JAR 包。也可以通过 Maven 或 Gradle 等构建工具来添加依赖。 3、将下载得到的 JAR 包复制到项目的类路径下或者将其添加为 Maven 或 Gradle 项目的依赖。 4、更新项目中所有引用了 Apache Commons FileUpload 的地方确保正确调用新版本提供的 API。 5、运行测试确认项目能够成功编译、部署和运行调试修改现有代码以适配新版本。重新运行测试确保没有因升级而引入任何错误或 bug。 6、将 Apache Commons FileUpload 升级到最新版本后重新发包部署到生产后确认。 2.4、Apache Commons Collections 组件
Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库它提供了很多强有力的数据结构类型并且实现了各种集合工具类。作为Apache开源项目的重要组件Commons Collections被广泛应用于各种Java应用的开发。 Apache Commons Collections库实现了一个TransformedMap类该类是对Java标准数据结构Map接口的一个扩展。该类可以在一个元素被加入到集合内时自动对该元素进行特定的修饰变换具体的变换逻辑由Transformer类定义Transformer在TransformedMap实例化时作为参数传入。而Apache Commons Collections已经内置了一些常用的Transformer如InvokerTransformer类。研究人员发现InvokerTransformer类可以通过调用Java的反射机制来调用任意函数从而导致任意代码执行。 Apache Commons Collections在3.2.2版本中做了一定的安全处理对InvokerTransformer、InstantiateTransformer等不安全的Java类的序列化支持增加了开关开关默认为关闭状态。 如果没有开启不安全类的序列化开关漏洞利用时则会抛出异常。 Commons Collections4中也存在内置的可能被攻击的类,存在被反序列化利用的风险。
目标将 Apache Commons Collections 升级到 3.2.2、4.1 及以上版本版本可参考下载地址否则涉及Apache Commons Collections 反序列化漏洞现场版本BOOT-INF/lib/commons-collections-3.2.jar需升级到最新的3.3.3版本它依赖Java 1.3及以上现场Java版本为1.8.0_391。
jar -tf ./dialup-service.jar |grep commons-collections #输出如下
BOOT-INF/lib/commons-collections-3.2.jar
BOOT-INF/lib/commons-collections4-4.1.jar#下载最新版本的 commons-collections。将最新版本的 commons-collections 复制到我们的项目中的 BOOT-INF/lib 目录下#更新项目中的依赖关系编辑pom.xml 文件中将 commons-collections 的版本号更新为最新版本#重新编译和运行项目直到无报错后重新发包部署替换完成升级2.5、Flink引用hadoop
Apache Hadoop是美国阿帕奇Apache基金会的一套开源的分布式系统基础架构。该产品能够对大量数据进行分布式处理并具有高可靠性、高扩展性、高容错性等特点。 Apache Hadoop YARN CapacityScheduler 中的 ZKConfigurationStore 由于没有验证从 ZooKeeper 获得的数据就进行反序列化处理使得有权访问 ZooKeeper 的攻击者通过特制数据以 YARN 用户身份运行任意命令。
目标将 Hadoop 升级到 2.10.2、3.2.4、3.3.4 及以上版本版本选择参考下载地址现场版本hadoop-3.3.2官方建议升级到 3.3.6、flink-1.15.1低于此版本的涉及Apache Hadoop YARN 远程代码执行漏洞(CVE-2021-25642)。
2.6、XXL-JOB应用
XXL-JOB是一个轻量级分布式任务调度平台。默认情况下XXL-JOB的API接口没有配置认证在API接口未授权访问的情况下攻击者通过向API发送精心构造的请求可以造成远程命令执行。下载地址https://gitee.com/xuxueli0323/xxl-job
目的默认不配置认证确公网暴露的情况下涉及XXL-JOB API 接口未授权访问远程命令执行漏洞因此我们需增加授权验证配置 xxl.job.accessToken 防止未授权访问漏洞。
#调度中心配置文件地址
/xxl-job/xxl-job-admin/src/main/resources/application.properties
### 调度中心通讯TOKEN [选填]非空时启用
xxl.job.accessTokenWeq34r2
#相关文件说明
xxl-job-admin调度中心
xxl-job-core公共依赖
xxl-job-executor-samples执行器Sample示例选择合适的版本执行器可直接使用也可以参考其并将现有项目改造成执行器
xxl-job-executor-sample-springbootSpringboot版本通过Springboot管理执行器推荐这种方式
xxl-job-executor-sample-frameless无框架版本#执行器 AccessToken 配置xxl-job-executor-sample-springboot
xxl:job:accessToken: Weq34r2admin:addresses: http://127.0.0.1:8080/xxl-job-admin或直接页面配置打开http://localhost:80807/xxl-job-admin/
2.7、Java应用内置tomcat组件
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器属于轻量级应用服务器在中小型系统和并发访问用户不是很多的场合下被普遍使用是开发和调试JSP 程序的首选。 Tomcat存在输入验证错误漏洞该漏洞源于存在不正确的输入验证漏洞可能会导致将单个请求视为多个请求从而在反向代理后面出现请求走私。
目标将 Tomcat 升级到 11.0.0-M11、10.1.16、9.0.83官方最新9.0.85、8.5.96 及以上版本版本参考官网低于9.0.80版本的涉及Tomcat 输入验证错误漏洞(CVE-2023-46589)、Tomcat 输入验证错误漏洞(CVE-2023-45648)、Tomcat 开放重定向漏洞(CVE-2023-41080)低于9.0.71版涉及Tomcat 拒绝服务漏洞(CVE-2023-24998)、低于9.0.72版涉及Tomcat 安全漏洞(CVE-2023-28708)、Tomcat Session 反序列化代码执行漏洞(CVE-2021-25329)对低于8.5.68、9.0.48、10.0.7 的Tomcat 涉及请求走私漏洞(CVE-2021-33037)、低于9.0.40涉及Tomcat 本地权限提升漏洞(CVE-2022-23181)、Tomcat 拒绝服务漏洞(CVE-2022-29885)、Tomcat 信息泄露漏洞(CVE-2021-24122)。 。
jar -tf dialup-controller.jar|grep tomcat #版本检查
BOOT-INF/lib/tomcat-embed-core-9.0.76.jar
BOOT-INF/lib/tomcat-embed-el-9.0.76.jar
BOOT-INF/lib/tomcat-embed-websocket-9.0.76.jar
#下载最新版本的 Tomcat Embed Core JAR 文件
wget http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.85/bin/embed/apache-tomcat-9.0.85-embed.tar.gz
#替换现有的现有的 tomcat-embed-core-9.0.76.jar 文件
mv tomcat-embed-core-9.0.76.jar tomcat-embed-core-9.0.76.jar.bak
mv tomcat-embed-core-9.0.85.jar tomcat-embed-core-9.0.76.jar#重新编译发布我们的java应用
mvn clean install
java -jar target/dialup-controller.jar
#部署替代环境现有应用