# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [v2.1.0](https://github.com/ReaJason/MemShellParty/releases/tag/v2.1.0) - 2025-08-12 ### Added 1. 添加 BigInteger、ScriptEngineBigInteger 打包方式(#86 by @wanswu) 2. 添加 SpELSpringGzipJDK17 打包方式(#83 by @xcxmiku and @ReaJason) 3. 添加 JXPathSpringGzipPacker、JXPathSpringGzipPackerJDK17 打包方式(GeoServer 漏洞注入) 4. 添加 Base64URLEncoded 打包方式(配合回显马进行小马拉大马测试) 5. 支持回显马在进行自定义字节码执行时去除 Java 魔数流量特征 ```http /path/code?payload=yv66vgAAADIBVQEAJ29yZy9hcGFj... ``` 改为只需要如下方式 ```http /path/code?payload=IBVQEAJ29yZy9hcGFj... ``` ### Fixed 1. 修复非调试模式下,构造方法中的 e.printStackTrace() 并没有被移除 2. 修复使用 Dockerfile 进行自定义构建时,自定义路由无法正常工作 3. 修复探测内存马中 Sleep 和 DNSLog 自定义类名失效(#89 Thanks @yinsel) 4. 修复自定义内存马中,不会自动调用 listener 添加 getResponseFromRequest 实现代码和 valve 修改包名的逻辑(使用自定义内存马请参考:[如何使用自定义内存马功能](/docs/WriteCustomShell.md) 进行实现,否则会出现不可用的问题) 5. 修复使用 SDK 时,Agent Packer 在 jar-with-dependencies(fatjar) 中会出现打包整个 jar 的问题 6. 修复 Tomcat Listener 注入会使之前所有 Listener 失效(#93) ### Changed 1. 修改 Packer 中对于 Thread.currentThread().getContextClassLoader() 的纯依赖改为新建 URLClassLoader,使得回显马可多次执行 2. 去除 logback(java11)和 okhttp 无用依赖,解决使用 SDK 打包部分场景会出现类版本不支持的问题 3. 实现 Lombok SuperBuilder 自定义 Builder 简化配置类的创建代码(#9f8f3baa) 4. 优化命令执行内存马,改为和回显马逻辑一致,使用 ProcessBuilder.redirectErrorStream 简化流读取 5. 修改 packer 中脚本存放添加 memshell-party 一级,防止打包成 fatjar 时文件全在根目录,可能会被覆盖导致功能破坏 6. 优化资源读取,通过工具类 loadTemplateFromResource 统一实现 7. 优化 Agent Attacher JDK11 异常处理 8. 依赖更新 **Full Changelog:** [v2.0.0...v2.1.0](https://github.com/ReaJason/MemShellParty/compare/v2.0.0...v2.1.0) ## [v2.0.0](https://github.com/ReaJason/MemShellParty/releases/tag/v2.0.0) - 2025-08-13 > [!WARNING] > 为了区分内存马和探测马,部分类名和接口做了调整,如果使用了 SDK,需要参考:[examples/memshell-party-maven-example](https://github.com/ReaJason/MemShellParty/tree/master/examples/memshell-party-maven-example) 进行调整。 ### Added - **支持探测马生成** (#71 by @ReaJason,部分代码参考 jeg 与 java-chains) - Web 添加关于页面 - 支持 H2 JDBC 打包方式(DataEase 漏洞注入) - 支持 XMLDecoder 打包方式(WebLogic 漏洞注入) - 支持 OGNL SpringUtils 打包方式(Confluence 漏洞注入) ### Fixed - 修复 SpringWebMVC Agent 无法点击生成按钮 (#77) - 修复 Spring Boot 对于 no static resource 老是抛出错误日志 - 修复 TongWeb8 context 获取错误导致注入失败的问题 ### Changed - **简化 Server 类型选择,例如 JBossEAP7 和 WildFly 选择 Undertow** (#74 by @zema1) - **去除注入器中静态代码块调用构造方法,减少注入动作的触发**(可能会导致部分 `Class.forName("name", true, loader)` 的场景注入失败,后续会添加字节码 Web 工具进行这块的处理) - 简化 Tomcat AgentInjector 的代码 - 前端 module 分包减少单个 js 体积,加快首次加载速度 - 移除 memshell-party-bom 模块,改用 gradle/libs.versions.toml,参考:[Use Version Catalogs to Centralize Dependency Versions](https://docs.gradle.org/current/userguide/best_practices_dependencies.html#use_version_catalogs) - 使用 build-logic 替代 buildSrc,加快构建速度,参考:[Favor build-logic Composite Builds for Build Logic](https://docs.gradle.org/current/userguide/best_practices_general.html#favor_composite_builds) - 从 generator 模块中分离 payload 生成代码并合并 deserialize 模块为 packer 模块 - 使用 i18 扁平化 key,并使用 namespace 区分 MemShell 和 ProbeShell 的字段,参考:[RSSNext/Folo/zh-CN.json](https://github.com/RSSNext/Folo/blob/dev/locales/common/zh-CN.json) - 升级 gradle-maven-publish-plugin 插件版本,简化打包指令 - 统一生成内存马类过程中抛出异常为 GenerationException,并单独设置 GlobalExceptionHandler **Full Changelog:** [v1.10.0...v2.0.0](https://github.com/ReaJason/MemShellParty/compare/v1.10.0...v2.0.0) ## [v1.10.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.10.0) - 2025-06-07 ### Added - 添加新的 JSP 打包方式(直接使用 defineClass 进行注入)(by @zema1 #67) - 支持 Tomcat 和 JBossAS ProxyValve 内存马(通过动态代理将 StandardPipeline 的第一个 valve 进行包装注入自定义逻辑) ### Fixed - 修复哥斯拉无法使用最新版连接 - 修复 TongWeb8 Valve 未适配 - 修复移动端 UI 输入框 placeholder 字体过大 - 修复移动端 UI 类名复制按钮超出卡片范围 ### Changed - 修改 Valve 和 Listener 字节码修改时机,改为生成时再进行修改,方便自定义内存马生成 - 合并 memshell 与 memshell-jdk8 模块,方便维护 - UI 使用新的 shadcn/ui 提供的 Zinc 主题配置 - 将所有 Shell 捕获异常从 Exception 改为 Throwable - 简化 Shell base64 方法代码 - Gradle 更新至 8.14.2 - 参考 [General Gradle Best Practices](https://docs.gradle.org/current/userguide/best_practices_general.html),将构建脚本改为 Kotlin DSL **Full Changelog:** [v1.9.0...v1.10.0](https://github.com/ReaJason/MemShellParty/compare/v1.9.0...v1.10.0) ## [v1.9.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.9.0) - 2025-05-28 ### Added - 支持 TongWeb8 内存马生成 by @ReaJason - 通过 context 获取 webAppClassLoader,不再依赖 Thread.currentThread().getContextClassLoader() 为请求线程,参考:[任意类加载环境下注入内存马](https://reajason.eu.org/writing/whichclassloaderforshell/) - 全面支持使用 ASM 生成 Agent(仅需 92.5 KB),并且可选 JDKAttacher 与 JREAttacher - 支持命令执行自定义实现类,RuntimeExec or ForkAndExec ### Fixed - 修复 Apusic Listener 由于 response 获取错误导致不可用 - 修复 Jakarta WebSocket 无法注入 ### Changed - Godzilla WebSocket 默认使用 AES_BASE64 加密器,支持使用 [GzWebsocket](https://github.com/xsshim/GzWebsocket) 插件进行连接。 - Gradle、Web 项目依赖更新 - UI 生成界面默认勾选缩小字节码 - UI 优化手机端选项布局,单行显示每个输入框 - UI 使用紧凑模式,隐藏非常用字段简化操作路径 - 提取公共 Tailwind CSS 类名,简化表单组件代码 - yup 替代 zod 减少打包体积,并将自定义表单验证融合到 react-hook-form 中优化 UX - 重构 Shell Generator 代码 **Full Changelog:** [v1.8.0...v1.9.0](https://github.com/ReaJason/MemShellParty/compare/v1.8.0...v1.9.0) ## [v1.8.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.8.0) - 2025-05-14 ### Added - 支持普元中间件内存马生成(only 6.5 版本)by @ReaJason(#60) - 支持哥斯拉 WebSocket 内存马生成与测试 - 添加 Groovy 通用恶意类加载打包方式(用于测试 Jenkins 脚本执行) - 命令执行支持加密器,双 Base64 测试绕过 WAF 安全设备 ### Fixed - 修复 Jetty 高版本中 ee8 ~ ee10 无法注入(#61) - 修复 Spring Boot 下类加载的原因导致的 Tomcat/Jetty/Undertow 部分内存马注入失败 ### Changed - 命令执行改为反射调用 forkAndExec 以绕过 RASP(JDK7+) - 获取所有线程代码改为 `Thread.getAllStackTraces().keySet()`,高版本 JDK 不再需要 bypass module - 优化 boot 在启动时即触发 Server 的内存马生成注册,加速第一次请求访问 **Full Changelog:** [v1.7.0...v1.8.0](https://github.com/ReaJason/MemShellParty/compare/v1.7.0...v1.8.0) ## [v1.7.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.7.0) - 2025-04-06 ### Added - 支持发布到 MavenCentral,可通过引入依赖使用生成 API by @ReaJason(#41) - 支持 CC3、CC4 反序列化 payload 打包方式 - 支持随机参数生成与默认选项(#50) ### Changed - 去除代码混淆相关代码 - 为了更好地在 MavenCentral 展示,重命名部分模块 - 使用 Jackson 代替 Fastjson 降低 boot 打包体积 - 移除 commons-codec 降低 boot 打包体积 - 升级 shadcn/ui 所有 component 代码 **Full Changelog:** [v1.6.0...v1.7.0](https://github.com/ReaJason/MemShellParty/compare/v1.6.0...v1.7.0) ## [v1.6.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.6.0) - 2025-03-30 > 做代码生成以及代码混淆真是一件需要耐心的事情 ### Added - 支持自定义内存马生成 by @ReaJason(#49) - 支持命令回显 ASM Agent 内存马 by @ReaJason(#51) - 支持简易的代码混淆 by @ReaJason(#13) - 支持自动发布 DEV 分支代码 CD ### Changed - 简化 Jetty 获取 Context 代码 - 优化 Dockerfile 减小镜像体积 **Full Changelog:** [v1.5.0...v1.6.0](https://github.com/ReaJason/MemShellParty/compare/v1.5.0...v1.6.0) ## [v1.5.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.5.0) - 2025-03-01 ### Added - 支持 NeoreGeorg 内存马生成 by @ReaJason - 支持 UI 显示更新按钮跳转到 GitHub Release 界面 ### Changed - 简化 Valve 内存马代码 - 升级 Gradle 8.13 **Full Changelog:** [v1.4.0...v1.5.0](https://github.com/ReaJason/MemShellParty/compare/v1.4.0...v1.5.0) ## [v1.4.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.4.0) - 2025-02-26 ### Added - 支持缩小字节码 (移除调试信息) by @ReaJason - 支持 Tomcat Jakarta WebSocket ### Fixed - 修复自定义注入器类名不起作用 ### Changed - 优化跨平台开发体验,将 bash 脚本改为 js 脚本 **Full Changelog:** [v1.3.2...v1.4.0](https://github.com/ReaJason/MemShellParty/compare/v1.3.2...v1.4.0) ## [v1.3.2](https://github.com/ReaJason/MemShellParty/releases/tag/v1.3.2) - 2025-02-25 ### Fixed - 修复 Tomcat WebSocket 注入报错,无法工作 ### Changed - 添加 foojay-toolchains 插件,支持 Dockerfile 构建时自动下载缺失的 JDK 版本 - 优化构建 Spring Boot 的 Dockerfile,最小权限原则 - 支持一键构建的 Dockerfile,适配需要 NGINX 反代的场景 - 代码重构支持一处注册所有 Server 的 Shell 配置 **Full Changelog:** [v1.3.1...v1.3.2](https://github.com/ReaJason/MemShellParty/compare/v1.3.1...v1.3.2) ## [v1.3.1](https://github.com/ReaJason/MemShellParty/releases/tag/v1.3.1) - 2025-02-20 ### Added - UI 中打包配置中添加 Loading 状态 ### Fixed - 修复 UI 在修改目标服务时,挂载类型有时未跟着变化导致生成失败 **Full Changelog:** [v1.3.0...v1.3.1](https://github.com/ReaJason/MemShellParty/compare/v1.3.0...v1.3.1) ## [v1.3.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.3.0) - 2025-02-20 ### Added - 支持 Hessian、Hessian2 反序列化,XSLT 链 (#36) by @ReaJason ### Changed - 移除无用依赖,JavaSocket,Gson - Gradle 升级至 8.12.1 - 更新 TestContainers 和 Junit 的版本 ### Fixed - 修复 UI 在仅修改打包方式重新生成时,多选 payload 下拉框置空,且 payload 没有变为最新的。 **Full Changelog:** [v1.2.1...v1.3.0](https://github.com/ReaJason/MemShellParty/compare/v1.2.1...v1.3.0) ## [v1.2.1](https://github.com/ReaJason/MemShellParty/releases/tag/v1.2.1) - 2025-02-19 ### Changed - UI 增强手机端响应式,增强 i18n 显示 (#39) ### Fixed - 修复 CB110 版本 serialVersionUID 修改失效导致无法利用成功 **Full Changelog:** [v1.2.0...v1.2.1](https://github.com/ReaJason/MemShellParty/compare/v1.2.0...v1.2.1) ## [v1.2.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.2.0) - 2025-02-19 ### Added - 支持 AntSword 内存马生成 by @ReaJason - 添加 Java 反序列化其他 CB 版本 Payload 生成 ### Changed - CI 分离单独测试 was7 集成测试,大幅度减少测试时间 - 部分 UI 调整 ### Fixed - 修复随机类名如果为保留字时会无法加载 **Full Changelog:** [v1.1.0...v1.2.0](https://github.com/ReaJason/MemShellParty/compare/v1.1.0...v1.2.0) ## [v1.1.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.1.0) - 2025-02-15 ### Added - 支持 Suo5 内存马生成 by @ReaJason ### Changed - 升级 TailWind CSS v4 - 分离 i18n EN 和 ZH 为两个 json 文件,方便维护以及 VSCode 插件识别 ### Fixed - 修复 sonner 颜色主题未随着修改而变化 - 修复 IDEA 本地构建 version 一直是 unspecified **Full Changelog:** [v1.0.0...v1.1.0](https://github.com/ReaJason/MemShellParty/compare/v1.0.0...v1.1.0) ## [v1.0.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.0.0) - 2025-01-03 ### Added - 支持 Tomcat、Jetty、WebLogic、GlassFish、JBoss、Resin 等 18 个中间件或框架的应用内存马 - 支持 Filter、Servlet、Listener、NettyHandler、Agent 等常见内存马挂载类型 - 支持哥斯拉、冰蝎、命令执行功能 - 支持 Base64、Jar、JSP、常见表达式、常见模板引擎、反序列化等打包方式