复现环境

win2003

Tomcat/7.0.75



复现过程


对Tomcat的server.xml文件增加如下代码

<Context path="/test" docBase="C:\test\examples" debug="1" reloadable="true">
        <Resources className="org.apache.naming.resources.VirtualDirContext" extraResourcePaths="/=C:\test\leaked" />
        </Context>

 

 

Tomcat(CVE-2017-12616)源码泄露_apache


意思就是,当别人访问/test路径时,会被映射到物理路径C:\test\examples。当/examples路径里面没有你要访问的文件时,系统就会去C:\test\leaked进行查找。

这个时候当你访问“/test/test.jsp.”的时候,就会显示test.jsp的源码。


这个漏洞还是有点鸡肋的,比如你要访问test.jsp。你在jsp后面加.之后就会访问leaked目录下的test.jsp的文件且系统会返回这个文件的源代码

Tomcat(CVE-2017-12616)源码泄露_xml_02


Tomcat(CVE-2017-12616)源码泄露_apache_03


访问下http://192.168.61.134:8080/test/test.jsp

Tomcat(CVE-2017-12616)源码泄露_xml文件_04

访问下http://192.168.61.134:8080/test/test.jsp.

Tomcat(CVE-2017-12616)源码泄露_xml_05

不仅仅是.    像是::$DATA     和%20   都是可以的

Tomcat(CVE-2017-12616)源码泄露_apache_06


Tomcat(CVE-2017-12616)源码泄露_xml_07


总结

漏洞影响范围:7.0.0 to 7.0.80

防御方法:在conf/server.xml关闭VirtualDirContex参数