Releases: ReaJason/MemShellParty
Releases · ReaJason/MemShellParty
v2.1.0
Added
- 添加 BigInteger、ScriptEngineBigInteger 打包方式(#86 by @wanswu)
- 添加 SpELSpringGzipJDK17 打包方式(#83 by @xcxmiku and @ReaJason)
- 添加 JXPathSpringGzipPacker、JXPathSpringGzipPackerJDK17 打包方式(GeoServer 漏洞注入)
- 添加 Base64URLEncoded 打包方式(配合回显马进行小马拉大马测试)
- 支持回显马在进行自定义字节码执行时去除 Java 魔数流量特征
改为只需要如下方式/path/code?payload=yv66vgAAADIBVQEAJ29yZy9hcGFj.../path/code?payload=IBVQEAJ29yZy9hcGFj...
Fixed
- 修复非调试模式下,构造方法中的 e.printStackTrace() 并没有被移除
- 修复使用 Dockerfile 进行自定义构建时,自定义路由无法正常工作
- 修复探测内存马中 Sleep 和 DNSLog 自定义类名失效(#89 Thanks @yinsel)
- 修复自定义内存马中,不会自动调用 listener 添加 getResponseFromRequest 实现代码和 valve 修改包名的逻辑(使用自定义内存马请参考:如何使用自定义内存马功能 进行实现,否则会出现不可用的问题)
- 修复使用 SDK 时,Agent Packer 在 jar-with-dependencies(fatjar) 中会出现打包整个 jar 的问题
- 修复 Tomcat Listener 注入会使之前所有 Listener 失效(#93)
Changed
- 修改 Packer 中对于 Thread.currentThread().getContextClassLoader() 的纯依赖改为新建 URLClassLoader,使得回显马可多次执行
- 去除 logback(java11)和 okhttp 无用依赖,解决使用 SDK 打包部分场景会出现类版本不支持的问题
- 实现 Lombok SuperBuilder 自定义 Builder 简化配置类的创建代码(#9f8f3baa)
- 优化命令执行内存马,改为和回显马逻辑一致,使用 ProcessBuilder.redirectErrorStream 简化流读取
- 修改 packer 中脚本存放添加 memshell-party 一级,防止打包成 fatjar 时文件全在根目录,可能会被覆盖导致功能破坏
- 优化资源读取,通过工具类 loadTemplateFromResource 统一实现
- 优化 Agent Attacher JDK11 异常处理
- 依赖更新
Full Changelog: v2.0.0...v2.1.0
更新方式
Docker 部署
docker rm -f memshell-party
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latestJar 包启动
仅支持 JDK17 及以上版本
java -jar --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED boot-2.1.0.jarv2.0.0
Warning
为了区分内存马和探测马,部分类名和接口做了调整,如果使用了 SDK,需要参考: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
- 使用 build-logic 替代 buildSrc,加快构建速度,参考:Favor build-logic Composite Builds for Build Logic
- 从 generator 模块中分离 payload 生成代码并合并 deserialize 模块为 packer 模块
- 使用 i18 扁平化 key,并使用 namespace 区分 MemShell 和 ProbeShell 的字段,参考:RSSNext/Folo/zh-CN.json
- 升级 gradle-maven-publish-plugin 插件版本,简化打包指令
- 统一生成内存马类过程中抛出异常为 GenerationException,并单独设置 GlobalExceptionHandler
Full Changelog: v1.10.0...v2.0.0
更新方式
Docker 部署
docker rm -f memshell-party
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latestJar 包启动
仅支持 JDK17 及以上版本
java -jar --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED boot-2.0.0.jarv1.10.0
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,将构建脚本改为
 Kotlin DSL
Full Changelog: v1.9.0...v1.10.0
更新方式
Docker 部署
docker rm -f memshell-party
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latestJar 包启动
仅支持 JDK17 及以上版本
java -jar --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED boot-1.10.0.jarv1.9.0
Added
- 支持 TongWeb8 内存马生成 by @ReaJason
- 通过 context 获取 webAppClassLoader,不再依赖 Thread.currentThread().getContextClassLoader() 为请求线程,参考:任意类加载环境下注入内存马
- 全面支持使用 ASM 生成 Agent(仅需 92.5 KB),并且可选 JDKAttacher 与 JREAttacher
- 支持命令执行自定义实现类,RuntimeExec or ForkAndExec
Fixed
- 修复 Apusic Listener 由于 response 获取错误导致不可用
- 修复 Jakarta WebSocket 无法注入
Changed
- Godzilla WebSocket 默认使用 AES_BASE64 加密器,支持使用 GzWebsocket 插件进行连接。
- Gradle、Web 项目依赖更新
- UI 生成界面默认勾选缩小字节码
- UI 优化手机端选项布局,单行显示每个输入框
- UI 使用紧凑模式,隐藏非常用字段简化操作路径
- 提取公共 Tailwind CSS 类名,简化表单组件代码
- yup 替代 zod 减少打包体积,并将自定义表单验证融合到 react-hook-form 中优化 UX
- 重构 Shell Generator 代码
Full Changelog: v1.8.0...v1.9.0
更新方式
Docker 部署
docker rm -f memshell-party
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latestJar 包启动
仅支持 JDK17 及以上版本
java -jar --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED boot-1.9.0.jarv1.8.0
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
更新方式
Docker 部署
docker rm -f memshell-party
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latestJar 包启动
仅支持 JDK17 及以上版本
java -jar --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED boot-1.8.0.jarv1.7.0
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
更新方式
Docker 部署
docker rm -f memshell-party
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latestJar 包启动
仅支持 JDK17 及以上版本
java -jar --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED boot-1.7.0.jarv1.6.0
做代码生成以及代码混淆真是一件需要耐心的事情
Added
- 支持自定义内存马生成(#49)by @ReaJason
- 支持命令回显 ASM Agent 内存马(#51)by @ReaJason
- 支持简易的代码混淆(#13)by @ReaJason
- 支持自动发布 DEV 分支代码 CD
Changed
- 简化 Jetty 获取 Context 代码
- 优化 Dockerfile 减小镜像体积
Full Changelog: v1.5.0...v1.6.0
更新方式
Docker 部署
docker rm -f memshell-party
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latestJar 包启动
仅支持 JDK17 及以上版本
java -jar --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED boot-1.6.0.jarv1.5.0
Added
- 支持 NeoreGeorg 内存马生成 by @ReaJason
- 支持 UI 显示更新按钮跳转到 GitHub Release 界面
Changed
- 简化 Valve 内存马代码
- 升级 Gradle 8.13
Full Changelog: v1.4.0...v1.5.0
更新方式
Docker 部署
docker rm -f memshell-party
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latestJar 包启动
仅支持 JDK17 及以上版本
java -jar --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED boot-1.5.0.jarv1.4.0
Added
- 支持缩小字节码(移除调试信息) by @ReaJason
- 支持 Tomcat Jakarta WebSocket
Fixed
- 修复自定义注入器类名不起作用
Changed
- 优化跨平台开发体验,将 bash 脚本改为 js 脚本
Full Changelog: v1.3.2...v1.4.0
v1.3.2
Fixed
- 修复 Tomcat WebSocket 注入报错,无法工作
Changed
- 添加 foojay-toolchains 插件,支持 Dockerfile 构建时自动下载缺失的 JDK 版本
- 优化构建 Spring Boot 的 Dockerfile,最小权限原则
- 支持一键构建的 Dockerfile,适配需要 NGINX 反代的场景
- 代码重构支持一处注册所有 Server 的 Shell 配置
Full Changelog: v1.3.1...v1.3.2