Tomcat中DefaultServlet漏洞复现
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏。 CVE-2017-12615 环境搭建 这里用Docker搭建环境。Dockerfile: FROM tomcat:8.5.19-alpine COPY context.xml web.xml /usr/local/tomcat/conf/ COPY debug.sh catalina.sh /usr/local/tomcat/bin/ WORKDIR /usr/local/tomcat/bin/ RUN chmod +x debug.sh && \ chmod +x catalina.sh CMD ["./debug.sh"] debug.sh代码如下: #!/bin/bash ./startup.sh sleep 1000000 覆盖catalina.sh,向文件开头加入以下代码,用于debug。 export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005' 在web.xml中配置DefaultServlet的开启: <servlet> <servlet-name>defalut</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>defalut</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping></web-app> 容器其中之后将lib目录下的文件复制出来导入IDEA即可: docker cp tomcat:/usr/local/tomcat/lib ./ docker run如果句柄不够需要加上以下参数: --ulimit nofile=65535:65535 漏洞分析 Tomcat爆出过多个关于DefaultServlet的漏洞。它是Tomcat中自带的一个Servlet,但默认不开启,位于/lib/catalina.jar!/org/apache/catalina/servlets/下。 DefaultServlet定义了doPut方法: protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { if (this....