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 文件。
- 照常访问/WEB-INF/web.xml,响应404.
- 使用%u002e绕过:/%u002e/WEB-INF/web.xml
- 使用空字符绕过:/.%00/WEB-INF/web.xml
复现CVE-2021-28169
正常通过
/static?/WEB-INF/web.xml
无法访问到敏感文件web.xml.对字母“W”进行双重URL编码,即可绕过限制进行访问:
curl -v http://192.168.17.244:8080/static?/%2557EB-INF/web.xml
F
1.更新版本