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配置加固和运行时保护机制可以提高安全性。
➡️

继续阅读