Java Servlet前置知识

Servlet/Filter/Listener Java Web三大件

1.Servlet

Servlet是服务期端的Java的应用程序,用于处理http请求并做出相应的响应。

7200f7125f97563204de7ea26dc35c62.png

2.Filter

介于Web和Servlet之间的过滤器,用于过滤未到达Servlet的请求或者由Servlet生成但还没有返回响应

(可见上图)

3.listener

listener是用于监听某些特定动作的监听器。当特定动作发生时,监听该动作的监听器会自动调用相应的方法,比如

f6ffb2c6e921b812dd6da32a017023e8.png

解释一下上图,但我们创建一个session时,会自动调用HttpSessionListener中的sessionCreated,而当session被销毁的时候也同时会调用 sessionDestroyed() 方法

内存马的攻击面

webshell实际上也是一种web服务,所以可以有以下几种思路

1.动态注册/字节码替换 interceptor/controller(使用框架如 spring/struts2/jfinal)

2.动态注册/字节码替换 使用责任链设计模式的中间件、框架的实现(例如 Tomcat 的 Pipeline & Valve,Grizzly 的 FilterChain & Filter 等等)

3.动态注册/字节码替换 servlet-api 的具体实现 servlet/filter/listener

4.动态注册/字节码替换一些定时任务的具体实现 比如 TimeTask等

所以,webshell作为一个后门,实际上我们需要他完成的工作室能够接受恶意注入并回显。

(后面设计的知识还没学,过几天做回来填坑)