0、前言
从上周末到这周都在做RCE(Remote Command/Code Execute,远程命令执行或者代码执行 )相关漏洞复现,像log4j2漏洞在复现过程用到的JDK有特定版本要求,我的kali虚拟机默认是JDK11,而我又不希望直接删除JDK11,可多个版本JDK共存,想用到哪个版本时切换,查询了相关资料,再自己实践后可行。因此整理了本文分享出来。
参考文章:
https://zhuanlan.zhihu.com/p/399295670
https://blog.csdn.net/u012804180/article/details/78858907
1、查看当前java版本号
查看版本号目的是为了方便后面要修改回这个版本时,切换命令的编写
#查看版本
java -version
# 结果
openjdk version "11.0.20-ea" 2023-07-18
OpenJDK Runtime Environment (build 11.0.20-ea+7-post-Debian-1)
OpenJDK 64-Bit Server VM (build 11.0.20-ea+7-post-Debian-1, mixed mode, sharing)
2、查看JDK安装目录
目的是想要把其他版本的JDK安装包放在一起,方便统一管理。先用which
查看java在哪个目录下,使用cd
切换目录时发现给出的路径不是目录,再使用ls -lrt
命令来找到最终实际放JDK安装包的目录。
# 使用which命令
which java
# 给出结果是,这个不是目录,cd时会提示
cd: 不是目录: /usr/bin/java
# 使用两次ls -lsr命令才找到实际放JDK安装包的目录
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java
# 实际放JDK安装包的目录是/usr/lib/jvm
cd /usr/lib/jvm
3、下载目标版本的JDK
由于我需要的是jdk-8u191的,我到官网下载linux系统64位,我测试过使用jdk-8u401安装完最后,在使用命令java -version
查看版本时一直报错:zsh: 可执行文件格式错误: java,但使用jdk-8u191和jdk-8u151都正常,如果有使用到jdk-8u401版本异常的话可换其他版本。
官网下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
下载时需要登录,如果嫌麻烦,可关注我的公众号:大象只为你,回复:jdk8,获取jdk-8u191和jdk-8u151适用linux系统64位的安装包。
下载完后复制到目录/usr/lib/jvm
4、安装JDK
4.1、解压压缩包
使用tar命令解压缩
# 解压压缩包
tar -zxvf jdk-8u191-linux-x64.tar.gz
tar 命令的一般格式:
tar [选项] 文件或目录名
该命令对文件和目录进行打包。
选项及其含义如下。
-f:文件名:使用指定的存档文件。
-c:创建一个新的文档。
-r:用于将文件附加到已存在的文档后面。
-u:仅仅添加比文档文件更新的文件。
-x:从文档文件中恢复被备份的文件。
-t:用于列出一个文档文件中的被备份出的文件名。
-z:用 zip 命令压缩或用 unzip 命令解压。
4.2、安装和配置
使用update-alternatives命令进行安装和设置jdk,可使多个版本共存,先install再set。在install时需要填写优先级,填写jdk版本号,jdk8的去掉中间0 ,jdk11全部拼接上,目的是让优先级的位数一样。
命令说明:先install 再set
-安装命令
update-alternatives: --install <链接> <名称> <路径> <优先级>
-设置命令–默认为当前版本
update-alternatives: --set <名称> <路径>
-移除命令,当不需要该版本时可移除命令,不会删除安装包
update-alternatives: --remove <名称> <路径>
-多版本JDK管理,切换其他版本时可用该命令
update-alternatives --config <名称>
以安装jdk-8u191为例
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_191/bin/java 18191
update-alternatives --set java /usr/lib/jvm/jdk1.8.0_191/bin/java
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_191/bin/javac 18191
update-alternatives --set javac /usr/lib/jvm/jdk1.8.0_191/bin/javac
如果不要该版本可用以下命令进行移除
update-alternatives --remove java /usr/lib/jvm/jdk1.8.0_191/bin/java
update-alternatives --remove javac /usr/lib/jvm/jdk1.8.0_191/bin/javac
切换其他版本时可使用以下命令
# 配置指定java版本
update-alternatives --config java
# 配置对应java文档版本,如果没有安装则不用选择,跟java同时操作
update-alternatives --config javac
5、下期内容预告
下期会分享跟RCE相关的内容,会先以ctfhub—rce通关热身,敬请期待…
6、资料获取
如果需要jdk-8u191或jdk-8u151适用linux系统64位的安装包,请关注我的公众号:大象只为你,后台回复:jdk8。如果需要kali虚拟机,后台回复:虚拟机。