记一次jmet报错信息Exception in thread “main“ java.lang.IllegalAccessError: class ysoserial.payloads.util.Ga

前言

jmet命令参数:

usage: jmet [host] [port]

-Q,--Queue <name> queue name(队列消息名)

-I,--impl <arg> ActiveMQ| Artemis| WebSphereMQ| Qpid10| Qpid09| HornetQ| SwiftMQ| RabbitMQ| OpenMQ(指定中间件类型/JMS客户端)

-Y,--ysoserial <CMD> Deser exploitation mode(指定命令)

-Yp,--payload <payloadname> Optional: Ysoserial Payload to use(可选:Ysoserial有效载荷使用) BeanShell1| CommonsBeanutils1| CommonsCollections1| CommonsCollections2| CommonsCollections3| CommonsCollections4| CommonsCollections5| Groovy1| Hibernate1| Hibernate2| Jdk7u21| JSON1| ROME| Spring1| Spring2

-C,--Custom <scriptname> Custom script exploitation mode(自定义脚本使用模式)

-f,--filter <scriptname> filter script(过滤脚本)

-pw,--password <pass> password for authentication(密码进行身份认证)

-s,--substitute Substituation mode: Use §§ to pass ysoserial payload name to CMD(使用§§ 来传递ysoserial有效载荷名称到cmd)

-T,--Topic <name> topic name(主题名)

-u,--user <id> user for authentication(用户身份认证)

-v,--verbose Running verbose mode(运行详细模式)

-X,--XXE <URL> XXE exploitation mode(XXE剥削模式)

-Xp,--xxepayload <payloadname> Optional: XXE Payload to use EXTERNAL| PARAMATER| DTD(XXE有效载荷使用)

-Zc,--channel <channel> channel name (only WebSphereMQ)(通道名称,只有WebSphereMQ)

-Zq,--queuemanager <name> queue manager name (only WebSphereMQ)(队列管理器名称)

-Zv,--vhost <name> vhost name (only AMQP-Brokers: RabbitMQ|QPid09|QPid10)

正文

在进行ActiveMQ 反序列化漏洞(CVE-2015-5254)测试的时候,使用的反序列化软件jmet出现了报错

Exception in thread "main" java.lang.IllegalAccessError: class ysoserial.payloads.util.Gadgets (in unnamed module @0x4015e7ec) cannot access class com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xalan.internal.xsltc.trax to unnamed module @0x4015e7ec
        at ysoserial.payloads.util.Gadgets.createTemplatesImpl(Gadgets.java:101)
        at ysoserial.payloads.ROME.getObject(ROME.java:34)
        at ysoserial.payloads.ObjectPayload$Utils.makePayloadObject(ObjectPayload.java:69)
        at de.codewhite.jmet.payload.impl.PayloadGenerator.createGadgetObjectPayloads(PayloadGenerator.java:28)
        at de.codewhite.jmet.JMET.validateAndCreatePayloads(JMET.java:137)
        at de.codewhite.jmet.JMET.setup(JMET.java:117)
        at de.codewhite.jmet.JMET.main(JMET.java:58)
 

上网查了一堆资料都解决不了,最后决定去jmet作者的github下面寻找,最后找到了原文

JMET depends on a lot of libraries :(. For details see the maven pom file.

JMET works with Java 8. Expect unpleasant surprises with Java 11.

翻译一下,大致意思为JMET 可与 Java 8 配合使用。Java 11 可能会出现意外情况。·

使用命令java -version查看一下java版本,我现在的版本为java17,很明显高出了要求

下载一下java8的包

https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz

创建Java文件夹

mkdir /usr/local/java

复制到/usr/local/java下

cp '/root/桌面/jdk-8u202-linux-x64.tar.gz'  /usr/local/java
 

切换到java路径下

cd /usr/local/java    

解压下载的压缩包

tar -zxvf jdk-8u202-linux-x64.tar.gz 

配置一下java的环境变量

vim /etc/profile     

粘贴以下内容

    JAVA_HOME=/usr/local/java/jdk1.8.0_202

    PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

    export JAVA_HOME

    export PATH

使用以下变量声明java变量

update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_202/bin/java" 1

update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_202/bin/javac" 1

update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_202/bin/javaws" 1

update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_202/bin/javaws" 1

重新载入profile

source /etc/profile

输入

 shutdown -r now    

重启后查看java版本还是17

使用命令来切换

update-alternatives --config java

成功切换

再次尝试发现成功

本文借鉴了小洋仔0kali下java任意版本安装、切换;maven配置;CVE-2017-18349(FastJson1.2.24反序列化导致任意命令执行漏洞)复现,从环境配置到复现保姆级过程_kali配置java环境-CSDN博客

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: JMeter是一种开源的性能测试工具,可以使用Java开发和运行。因此,运行JMeter需要Java Development Kit (JDK)。 JDK是一个软件开发工具包,其中包含了Java编程语言的开发环境和运行环境。JDK由Oracle提供,并且有多个版本可供选择。在运行JMeter之前,我们需要在计算机上安装JDK。 首先,我们需要在Oracle官网上下载适用于我们的操作系统的JDK版本。下载完成后,我们可以双击安装程序并按照提示进行安装。安装完成后,需要配置系统环境变量,以便JMeter能够找到和使用JDK。 通过设置JAVA_HOME变量,我们可以告诉JMeter JDK的安装路径。在Windows系统中,我们可以通过以下步骤设置JAVA_HOME变量: 1. 右键点击“我的计算机”或“此电脑”,然后选择“属性”。 2. 在弹出窗口的左侧点击“高级系统设置”。 3. 点击“环境变量”按钮,在系统变量中找到“JAVA_HOME”。 4. 点击“编辑”按钮,然后输入JDK的安装路径,例如“C:\Program Files\Java\jdk1.8.0_211”。 5. 点击“确定”按钮保存更改。 此外,我们还需要将JDK的“bin”目录添加到系统路径中,以便JMeter工具能够找到JDK的可执行文件。在系统变量的“Path”中添加JDK的“bin”目录即可。 设置完成后,我们可以打开JMeter,它将自动寻找配置的JDK路径,并使用该JDK来运行JMeter。这样,我们就可以开始使用JMeter工具来进行性能测试和负载测试等任务了。 总结起来,为了运行JMeter工具,我们需要先在计算机上安装JDK,并且设置系统环境变量和路径以使JMeter能够找到和使用JDK。只有在成功配置JDK后,我们才能正确运行JMeter工具执行各种性能测试任务。 ### 回答2: JMeter是一种用于性能测试和负载测试的开源工具,它支持运行在多种平台上的Java开发环境。JDK(Java Development Kit)是Java开发工具包,包含了Java编译器、调试器和其他开发工具所需的库文件和工具。 JMeter工具需要在运行环境中使用Java来执行,因此需要安装和配置JDK。首先,我们需要从Oracle官方网站或其他可信的渠道下载并安装适用于我们操作系统的JDK版本。安装过程中可能需要指定安装路径和其他参数,可以根据自己的需求进行选择。 安装完成后,我们需要将安装路径中的JDK文件夹添加到系统的环境变量中,以便JMeter能够找到Java执行环境。具体步骤为打开系统的环境变量设置界面,找到"Path"变量,并在其值中添加JDK的安装路径。保存设置后,重启计算机以使更改生效。 接下来,我们可以打开JMeter工具,并在工具的配置中指定JDK的路径。打开JMeter的安装目录,找到bin文件夹中的jmeter.bat(Windows)或jmeter.sh(Linux/Mac)文件,使用文本编辑器打开该文件。在文件的开头部分,可以找到一个变量定义,名为JAVA_HOME。将变量的值修改为我们安装JDK的路径,并保存文件。 此时,我们就可以通过运行jmeter.bat(Windows)或jmeter.sh(Linux/Mac)文件来启动JMeter工具。JMeter将会使用我们指定的JDK版本来执行,从而正常运行测试计划和生成测试告。 总而言之,JMeter工具需要在运行环境中使用JDK来执行。我们需要先安装JDK,并将其路径配置到系统的环境变量中,然后在JMeter工具的配置中指定JDK的路径,从而使JMeter能够正常运行。 ### 回答3: JMeter是一款功能强大的开源性能测试工具,它可以用于测试Web应用程序、数据库服务器和其他网络协议等。而JDK(Java Development Kit)是Java开发工具包,其中包含了用于开发、编译和运行Java程序的各种工具和库。 在JMeter中运行Java程序时,需要先安装JDK,并配置好环境变量。首先,我们需要下载并安装合适版本的JDK,根据操作系统的不同选择适当的安装包。安装完成后,我们需要设置JAVA_HOME环境变量,指向JDK的安装目录。这可以通过操作系统的系统属性设置来完成。同时,我们还需要将JDK的安装目录下的bin目录添加到PATH环境变量中,以便于在命令行中可以直接调用JDK中的命令。 在JMeter中使用JDK时,可以通过JMeter的Java请求(Java Request)组件来执行Java代码。在Java请求组件中,我们可以编写自己的Java代码,包括但不限于调用外部的Java类库、编写自定义函数等。在Java请求组件中,我们需要指定要执行的Java类、方法等相关信息,并可以传递参数给Java代码。JMeter会使用配置好的JDK来编译并执行Java代码,并返回结果。 总之,JMeter工具可以运行依赖于JDK的Java程序。通过在JMeter中配置JDK环境变量并使用Java请求组件,我们可以方便地在性能测试过程中执行Java代码,并进行相应的测试和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值