前言
最新在搞java反序列化漏洞在github搜索 java反序列化工具突然搜索到一个项目。感觉这个项目可以。作者也在一直更新所以下载下来编译一波。没想到这个是用gradle编译的握擦。我在maven编译的都不怎么熟练。这gradle不是歇菜了。况且我这漏洞已经复现并且已经拿到了webshell。想想这要不就算了。别搞了。后来想了想这个项目作者在一直更新。那如果后续别的工具搞不定的或许可以使用这个项目进行搞。于是就开搞了。这玩意我光编译和解决问题用了两天。最后发现缺少lib包我直接在github找相同的编译成功了。但是打不成功这个不在讨论范围内。相信作者会抽时间更新项目的这么大的项目通读代码前后结合才能知道是什么问题。废话不多说了开干。
项目代码:https://github.com/qi4L/JYso
使用方法:https://github.com/qi4L/JYso/wiki/JYso%E2%80%90CN
下载源码编译
我们从github下载代码。由于源代码使用idea 编译执行下载idea。我们对代码进行解压。
解压并且删除图下面画框的.idea 和gradle 使用使用idea打开代码
删除使用idea打开
在file找到setting界面找到gradle。创建一个gradle文件夹选择然后按照下图配置。点击应用。点击ok就行了
然后你会看到下载jar包啥的下载完毕以后你会发现这种错误。
Could not find javax.media.jai:jai-core:1.1.3.
Required by:
project :
Possible solution:
- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
Could not find com.oracle.weblogic:weblogic-server:1.0.
Required by:
project :
Possible solution:
- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
我第一页看到上面的错误就是百度了一波发现就是没有找到包什么的。然后我们在main下面创建一波lib目录然后从找到包。找包过程太坑爹了。所以我直接把包的名字放出来了。
jai_core-1.1.3.jar
weblogic-server.jar
wlthint3client.jar
我们把包导入了如何让他识别呢这个是重点我们在build.gradle 文件中写这段代码
api fileTree(dir:'src/main/lib',include:['*.jar']);
点同步两个箭头环绕的。
出现下图说明识别成功了
我们在点同步
还是报错。是不是这时候懵逼了。别着急我们没看其他文件我们看看哪里有javax.media.jai:jai-core
最后发现在libs.versions.toml 发现了我们把它注释了。有人说了这注释了不更找不到了。别忘了我们在lib目录里面已经给他jar包了。
注释这个叼毛
然后在同步后续又报错了
org.gradle.api.InvalidUserDataException: Invalid catalog definition:
- Problem: In version catalog libs, version reference 'javax.media.jai.jai.core' doesn't exist.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 131ms
走到这时候是不是有马在心中崩腾我也是沃日。我们冷静看看还有东西没有干掉。libs.versions.toml
同步一下又报错了。这是我尼玛想摔键盘了。但是这时候他告诉我们那里有问题了。没错就是\build.gradle’ line: 37
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\Administrator\Desktop\gradleproject\JYso-master\build.gradle' line: 37
* What went wrong:
A problem occurred evaluating root project 'JYso'.
> No such property: media for class: org.gradle.accessors.dm.LibrariesForLibs$JavaxLibraryAccessors
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 162ms
我们看看37行是有个啥。直接注释
直接注释在同步
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\Administrator\Desktop\gradleproject\JYso-master\build.gradle' line: 39
* What went wrong:
A problem occurred evaluating root project 'JYso'.
> No such property: oracle for class: org.gradle.accessors.dm.LibrariesForLibs$ComLibraryAccessors
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 426ms
同样的手段在同步我操看到build success 了这时候是不是眼泪都要流出来了沃日。我也是
我们点击build 点击clean
然我们点击jar。握擦又报错了。看样子是找不到jdk里面的java.exe我们配置一下
Execution failed for task ':compileJava'.
> Error while evaluating property 'javaCompiler' of task ':compileJava'.
> Failed to calculate the value of task ':compileJava' property 'javaCompiler'.
> The configured executable does not exist (C:\env\JAVA\jdk1.8.0_402\bin\javac.exe)
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 313ms
1 actionable task: 1 executed
我的是这个路径你们自己看自己的jdk路径。点击clean然后再点击jar
看到下图你是不是以为成功了。我们看看生成的jar包
这一看就是没有依赖的jar沃日。陷入怀疑了。不着急。我们在build.gradle
看到这个sharjar并且有入口函数那估计就是它了。
我们看到那个Jyso是红色感觉有点坑爹重新重启一下idea让它重新识别一下。当然不重启也行。强迫症可能会重启一下哈哈哈。并且我们看到showjar了。没错就是点一波
我操终于成功了。
测试一下
perfect完美。如何强制使用一个特定版本jar包版本再build.gradle里面加入.强制使用 commons-beanutils 1.6.1 版本的jar
implementation('commons-beanutils:commons-beanutils:1.6.1') {
version {
strictly '1.6.1'
}
}
总结
lib包和编译的修改的东西我放到频道了。并且含有编译成功的。不过低版本打不了代码存在问题。主要是讲解如何编译后续作者更新以后你们可以自己编译。
https://t.me/SoftwareNoticeChannel/418