内存马入门知识学习
Java Servlet前置知识
Servlet/Filter/Listener Java Web三大件
1.Servlet
Servlet是服务期端的Java的应用程序,用于处理http请求并做出相应的响应。
2.Filter
介于Web和Servlet之间的过滤器,用于过滤未到达Servlet的请求或者由Servlet生成但还没有返回响应
(可见上图)
3.listener
listener是用于监听某些特定动作的监听器。当特定动作发生时,监听该动作的监听器会自动调用相应的方法,比如
解释一下上图,但我们创建一个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作为一个后门,实际上我们需要他完成的工作室能够接受恶意注入并回显。
(后面设计的知识还没学,过几天做回来填坑)