Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164

admin 2025年7月3日02:49:19评论13 views字数 2458阅读8分11秒阅读模式

01.漏洞简介

       Jetty WEB-INF 敏感信息泄露漏洞。jetty是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

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

02.漏洞环境

jetty9.4.37 下载与启动

下载地址

https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.37.v20210219/jetty-distribution-9.4.37.v20210219.tar.gz

然后解压,进入 bin目录下执行

./jetty.sh start 启动jetty

准备一个简单的 war 包

由于jetty安装包下的webapps下没有任何web项目,需要准备一个war包

  • 这里使用IDEA生成简单的 hello word 项目

    Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164

  • 工程名称study

    Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164

  • 增加 archetypeCatalog internal 参数

Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164

  • 打war包

在工程根目录下运行:mvn clean package

  • war包复制到 jetty-distribution-9.4.37.v20210219/webapps/下

03.漏洞复现

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

Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164

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

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

Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164

04.RASP防护

rasp拦截调用参数和栈

{    "protocol":"HTTP/1.1",    "method":"GET",    "remoteHost":"[0:0:0:0:0:0:0:1]",    "requestURI":"/study/%2e/WEB-INF/web.xml",    "stackTrace":[        "java.io.File.<init>(File.java:275)",        "sun.nio.fs.AbstractPath.toFile(AbstractPath.java:96)",        "org.eclipse.jetty.util.resource.PathResource.getFile(PathResource.java:424)",        "org.eclipse.jetty.server.CachedContentFactory.getMappedBuffer(CachedContentFactory.java:355)",        "org.eclipse.jetty.server.CachedContentFactory$CachedHttpContent.getDirectBuffer(CachedContentFactory.java:596)",        "org.eclipse.jetty.server.HttpOutput.sendContent(HttpOutput.java:1346)",        "org.eclipse.jetty.server.HttpOutput.sendContent(HttpOutput.java:1225)",        "org.eclipse.jetty.server.ResourceService.sendData(ResourceService.java:728)",        "org.eclipse.jetty.server.ResourceService.doGet(ResourceService.java:294)",        "org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:449)"    ],    "localAddr":"[0:0:0:0:0:0:0:1]",    "parameterMap":{    },    "remoteAddr":"[0:0:0:0:0:0:0:1]"}

RASP防护

截获信息

    JRASP对文件创建进行了hook,能够获取文件的全部信息, 获取的文件信息去除了各种变形和转义字符。RASP截获文件全路径如下:

/private/var/folders/jl/gknl50qx6l13gl4_svpyj5sw0000gn/T/jetty-0_0_0_0-8080-study_war-_study-any-27103262034593673/WEB-INF/web.xml

开启阻断

    将敏感信息加入检测名单中,并开启阻断。再次请求,阻断生效。

Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164

常用的敏感文件下载列表:

'.DS_Store','id_rsa', 'id_rsa.pub', 'known_hosts', 'authorized_keys','.bash_history''.csh_history''.zsh_history''.mysql_history','.htaccess''.user.ini','web.config', 'web.xml',        // CVE-2021-28164 'build.property.xml''bower.json','Gemfile''Gemfile.lock','.gitignore','error_log''error.log''nohup.out',

原文始发于微信公众号(RASP安全技术):Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年7月3日02:49:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-28164 )检测与防御nCVE-2021-28164https://cn-sec.com/archives/883990.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息