Java内存马——Tomcat Valve型的三种注入
💡
原文中文,约30500字,阅读约需73分钟。
📝
内容提要
Tomcat通过责任链模式处理请求,利用Pipeline和Valve执行特定任务。攻击者可通过反射注入恶意Valve,操控请求处理流程并执行命令。注入方式包括纯反射、混合方式和字节码注入,隐蔽性和复杂性各异。防御措施包括限制反射调用和监控Valve行为。
🎯
关键要点
- Tomcat使用责任链模式处理请求,Pipeline包含多个Valve,每个Valve负责特定任务。
- 攻击者可以通过反射注入恶意Valve,操控请求处理流程并执行命令。
- 注入方式包括纯反射、混合方式和字节码注入,隐蔽性和复杂性各异。
- 防御措施包括限制反射调用和监控Valve行为。
- 纯反射注入不依赖Tomcat API,适用于无Tomcat库依赖的环境。
- 混合方式利用Tomcat API和反射,效率更高,代码更简洁。
- 字节码注入通过Java Agent和ASM/Javassist实现,具有极高隐蔽性。
- 恶意Valve的实现可以通过检查请求特征来执行命令。
- 检测与防御手段包括Heap Dump分析、RASP监控和限制反射调用。
- Tomcat配置加固和运行时保护机制可以提高安全性。
➡️