进去发现就是一个单纯的文件上传接口,试试功能,发现上传后的文件名会给出,还有一个下载连接,点开下载链接发现是这种格式的
http://7b576de9-dd31-4f71-b86d-0a8d5b6ff15f.node4.buuoj.cn:81/DownloadServlet?filename=e5ac31d0-6273-46bb-9863-d5f6d9105523_pwdTop500.txt
可以看见就是对于传入的参数进行下载,这里试试任意文件下载,了解javaweb的目录是
webapps/WEB-INF/classes/ #用于存放java字节码文件 webapps/WEB-INF/lib/ #用于存放该工程用到的库,例如servlet-api.jar等等 webapps/WEB-INF/web.xml #web工程的配置文件,完成用户请求的逻辑名称到真正的servlet类的映射
目标是/WEB-INF/web.xml
一层一层跳出试试
http://7b576de9-dd31-4f71-b86d-0a8d5b6ff15f.node4.buuoj.cn:81/DownloadServlet?filename=../../../../WEB-INF/web.xml
下载到了web.xml
在里面看到了servlet
的映射,然后去下载对应的.class
文件
http://7b576de9-dd31-4f71-b86d-0a8d5b6ff15f.node4.buuoj.cn:81/DownloadServlet?filename=../../../../WEB-INF/classes/cn/abc/servlet/DownloadServlet.class
反编译后读取源码,首先是UploadServlet
,在其中发现一个很突兀的代码
看看这行代码,在上传的文件中特殊对excel
文件进行处理,搜索引擎找找excel
和org.apache.poi.openxml4j
,了解到Excel文件实际上只是XML文档的zip文件,且存在一个XXE漏洞,简单学习下后,配合无回显读取本地敏感文件(Blind OOB XXE)即可
坑点:
尽量不要用7-zip,使用zip -r ../excel-1.xlsx *
命令