WEB-INF 目录结构
WEB-INF 是 Java 的 web 应用的安全目录,正常情况下客户端无法访问,只有服务端可以访问
/WEB-INF/web.xml
Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则
/WEB-INF/classes/
包含所有的 Servlet 类和其他类文件,类文件所在的目录结构与他们的包名称匹配
/WEB-INF/lib/
存放 web 应用需要的各种 jar 文件
/WEB-INF/src/
源码目录,按照包名结构放置各个 java 文件
/WEB-INF/database.properties
数据库配置文件
/WEB-INF/tags/
存放了自定义标签文件
WEB-INF 信息泄漏
WEB-INF/web.xml 泄露的起因是在使用网络架构的时候,对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致 web.xml 等文件能够被读取
读取的 web.xml 文件结构可能如下:
1 | <servlet> |
<servlet>
声明了一个 Servlet,其中FlagController
是这个 Servlet 组件命名的标识符com.vm.ctf.FlagController
是这个 Servlet 的实现类(全限定名)
<servlet-mapping>
定义了客户端请求 URL 和 Servlet 的映射关系,其中FlagController
是之前定义的 Servlet 的引用,表示将请求用该 Servlet 处理/Flag
定义了客户端请求的路径,当客户端发送一个 HTTP 请求到 http:///Flag 时,这个请求会被 FlagController
处理
同样可以利用信息泄漏,读取该 Servlet 的类文件,形式如下
1 | ?filename=WEB-INF/classes/com/vm/ctf/FlagController.class |