SnakeYaml反序列化

yaml和其他序列化依赖类似, 都是把对象转换为特定语法字符, 然后能把特定格式语法字符转换为对象, 其gadgets​都是在反序列化过程中可以动态触发某些方法, 导致数据流向发生改变, 从而达到危险方法

yaml在反序列化过程中能调用对象的setter​方法, 这就可以利用fastjson​中的链子; 还可以通过ScriptEngineManager​的实例化来利用SPI​机制通过URLClassloader​来加载远程恶意类, 从而在构造方法或static​方法rce

Thymeleaf 模版注入

跟着网上学习了一下thymeleaf模版注入,其实主要就是分析Spirng MVC框架在处理HTTP请求的时候,如何根据url寻找对应的处理器进行处理(即Controller实现的具体方法), 再看如何对返回的ModelAndView进行渲染的;

这个漏洞的利用点就是若用户可控Controller返回的视图值, 那在使用ThymeleafView渲染的时候, 就会进行预处理最后通过SPEL执行表达式.