SnakeYaml反序列化
yaml和其他序列化依赖类似, 都是把对象转换为特定语法字符, 然后能把特定格式语法字符转换为对象, 其gadgets
都是在反序列化过程中可以动态触发某些方法, 导致数据流向发生改变, 从而达到危险方法
yaml在反序列化过程中能调用对象的setter
方法, 这就可以利用fastjson
中的链子; 还可以通过ScriptEngineManager
的实例化来利用SPI
机制通过URLClassloader
来加载远程恶意类, 从而在构造方法或static
方法rce
Thymeleaf 模版注入
跟着网上学习了一下thymeleaf模版注入,其实主要就是分析Spirng MVC框架在处理HTTP请求的时候,如何根据url寻找对应的处理器进行处理(即Controller实现的具体方法), 再看如何对返回的ModelAndView进行渲染的;
这个漏洞的利用点就是若用户可控Controller返回的视图值, 那在使用ThymeleafView渲染的时候, 就会进行预处理最后通过SPEL执行表达式.