Jetty是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
编号: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 文件。此漏洞是CVE-2021-28164和CVE-2021-28169的新的绕过方式。
9.4.37 ≤ Eclipse Jetty ≤ 9.4.42
10.0.1 ≤ Eclipse Jetty ≤ 10.0.5
11.0.1 ≤ Eclipse Jetty ≤ 11.0.5
可以直接用vulhub项目直接搭建jetty9.4.40的环境,也可以自行搭建
项目地址 (版本是jetty9.4.40)
https://github.com/vulhub/vulhub/blob/master/jetty/CVE-2021-28164/
docker启动
cd /vulhub/jetty/CVE-2021-28164
docker-compose up -d
然后访问http://your-ip:8080
出现以下界面,搭建成功!
使用curl -I http://ip:port
可以看到Jetty版本
或是直接访问一个不存在的页面
使用Burpsuite发送GET请求/%u002e/WEB-INF/web.xml即可读取到web.xml文件
1.使用补丁版本,如9.4.43, 10.0.6, 11.0.6
2.官网建议,可以部署一些 Jetty重写规则,将原始请求 URI 中包含编码点段或空字符的任何请求重写为已知未找到的资源(https://github.com/eclipse/jetty.project/security/advisories/GHSA-vjv5-gp2w-65vm)
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
<Set name="regex">.*/(?:.+/)+.*</Set>
<Set name="replacement">/WEB-INF/Not-Found</Set>
</New>
</Arg>
</Call>
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.ValidUrlRule"/>
</Arg>
</Call>
参考链接:
https://github.com/eclipse/jetty.project/security/advisories/GHSA-vjv5-gp2w-65vm
https://mp.weixin.qq.com/s/GUsPetS256WEL90PaSNKYA
本文始发于微信公众号(Timeline Sec):CVE-2021-34429:Jetty WEB-INF文件读取复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论