java WEB-INF/web.xml泄露之[RoarCTF 2019]Easy Java1

知识点:

WEB-INF/web.xml泄露

参考:RoarCTF2019 easy Java_zydbk123456的博客-优快云博客

 

WEB-INF是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。WEB-INF主要包含一下文件或目录:

  • /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。

  • /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中

  • /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件

  • /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。

  • /WEB-INF/database.properties:数据库配置文件

漏洞成因:

通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。

漏洞检测以及利用方法:

通过找到web.xml文件,推断class文件的路径,最后得到class文件,再通过反编译class文件,得到网站源码。

找web.xml:

直接请求/WEB-INF/web.xml或者更换为POST请求

 这道题查看下方help,

 打开help.docx结果没有什么有用的信息,不过我们可以判断这里是有文件包含漏洞的,这里需要找到合适文件。题目名已经告诉我们,这里可能和Java有关。这里就要用到Java web的有关知识了,这里需要了解一下Java web的文件结构:

src/main/java: 这个目录一般是存放web项目的Java源文件的
src/main/resource: 这个目录一般是存放相关的配置文件
src/main/webapp: 这个目录一般是和web应用相关的
webapp下的文件目录是容易出现安全问题的
/WEB-INF/web.xml: Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则 
/WEB-INF/classes/:含了站点所有用的 class 文件(即编译后的Java文件),包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件

通过post请求下载web.xml文件 payload:Download?filename=/WEB-INF/web.xml

可以看到有个servlet(运行在web服务器或应用服务器上的程序)为FlagController,这个是可能有flag的类,存放于com.wm.ctf包下。那么尝试下载这个类。构造payload:Download?filename=/WEB-INF/classes/com/wm/ctf/FlagController.class

直接这样是不行,因为无法get请求。需要在Download页面下post请求传

filename=/WEB-INF/classes/com/wm/ctf/FlagController.class

下载后的文件打开就是有一个编码,解开就是flag

<think>好的,用户想了解关于web.xml的配置方法或示例。我需要整理相关的信息,并确保符合用户的要求。首先,根据用户提供的引用资料,web.xml在传统的Servlet应用中用于配置Servlet、映射、错误页面等。现在Spring Boot已经用注解替代了web.xml,但用户可能需要传统配置的示例。 用户引用了多个资料,其中引用[1]给出了Servlet配置的例子,引用[4]提到通配符映射,引用[5]是错误页面配置。引用[2]说明Spring Boot的替代方法,引用[3]则涉及安全性问题。用户可能需要传统配置和现代方法的对比。 我需要分步骤解释web.xml的基本结构,Servlet配置,映射,初始化参数,错误页面,然后提到Spring Boot中的替代方法。同时,要确保使用正确的中文术语,并按照系统级指令处理数学公式,不过这里可能用不上数学内容,但要注意代码块的格式。此外,生成相关问题,可能需要涵盖传统配置、Spring Boot方法、安全性、常见配置错误等。 需要检查引用是否正确,比如引用[1]的例子是否正确展示Servlet和映射,引用[5]的错误页面配置是否正确。然后组织内容,确保结构清晰,步骤明确。最后生成相关问题,帮助用户深入理解。</think>### web.xml 配置方法与示例 #### 一、基本结构 `web.xml` 是 Java Web 应用的部署描述文件,位于 `WEB-INF` 目录下。以下是一个基础模板: ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 配置内容 --> </web-app> ``` --- #### 二、核心配置示例 1. **Servlet配置与映射** 定义Servlet别名、类路径,并将URL绑定到Servlet: ```xml <servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>com.example.TestServlet</servlet-class> <!-- 初始化参数 --> <init-param> <param-name>configFile</param-name> <param-value>/config/test.properties</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> ``` - 访问方式:`http://host/应用上下文/test`[^1] 2. **通配符映射** 使用通配符匹配多个路径: ```xml <servlet-mapping> <servlet-name>PatternServlet</servlet-name> <url-pattern>/pattern/*</url-pattern> </servlet-mapping> ``` - 可匹配 `/pattern/user`、`/pattern/admin` 等路径[^4] 3. **错误页面配置** 自定义HTTP状态码对应的页面: ```xml <error-page> <error-code>404</error-code> <location>/error/404.html</location> </error-page> <error-page> <error-code>500</error-code> <location>/error/500.jsp</location> </error-page> ``` - 当出现404或500错误时,自动跳转指定页面[^5] --- #### 三、Spring Boot替代方案 在Spring Boot中,无需使用`web.xml`,可通过以下方式实现: 1. **注解配置** 使用 `@WebServlet`、`@WebFilter` 等注解: ```java @WebServlet(urlPatterns = "/test", initParams = { @WebInitParam(name = "configFile", value = "/config/test.properties") }) public class TestServlet extends HttpServlet { /*...*/ } ``` 2. **基于代码的配置** 通过 `ServletRegistrationBean` 动态注册: ```java @Bean public ServletRegistrationBean<TestServlet> testServlet() { ServletRegistrationBean<TestServlet> bean = new ServletRegistrationBean<>(new TestServlet(), "/test"); bean.addInitParameter("configFile", "/config/test.properties"); return bean; } ``` [^2] --- #### 四、安全性注意事项 - **敏感文件保护** `web.xml` 应存放在 `WEB-INF` 目录下,避免直接通过URL访问[^3] - **避免信息泄露** 错误页面建议使用静态HTML,而非包含堆栈信息的JSP ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值