Java内存马——Tomcat Valve型的三种注入
Java内存马——Tomcat Valve型的三种注入 转载自:https://www.freebuf.com/articles/web/433972.html 核心原理 **Tomcat Pipeline & Valve:**Tomcat 使用责任链模式处理请求。Pipeline包含多个Valve,每个Valve负责特定任务(如认证、日志、访问控制)。StandardWrapperValve(通常位于链尾) 最终调用 Servlet。 **StandardContext:**代表一个 Web 应用,持有其对应的Pipeline对象 (StandardContext#getPipeline())。 **目标:**将恶意Valve注入到目标 Web 应用StandardContext的Pipeline中,通常是插入在StandardContextValve(负责应用级路由) 和StandardWrapperValve(负责调用 Servlet) 之间,或者尽可能靠前(如紧接在AccessLogValve之后)。恶意 Valve 的invoke()方法检查特定请求特征,匹配则执行命令并截断管道(不再调用getNext().invoke()),直接返回响应。 注入方式详解 方式一:纯反射注入(无依赖) 场景:攻击者已通过漏洞(如反序列化、文件上传 Webshell、其他 RCE)获得代码执行能力,但当前执行环境没有 Tomcat 的catalina.jar等库依赖(例如在Bootstrap ClassLoader或Common ClassLoader加载的类中执行)。这是最通用的方式。 ...