一个演示易受 Spring Security 授权绕过 CVE-2022-31692 攻击的应用程序的项目

admin 2023年1月29日18:27:08评论98 views字数 1435阅读4分47秒阅读模式

CVE-2022-31692 演示

概述

一个简单的 Spring Boot 应用程序,演示了易受CVE-2022-31692攻击的配置。

此漏洞可能因其严重性而引起关注——它的 CVSS 3.x 基本分数为 9.8,因为它允许绕过身份验证。该项目的目的是演示公告中描述的导致漏洞适用的条件。

  • 应用程序期望 Spring Security 应用安全性来转发和包含调度程序类型。

  • 应用程序使用AuthorizationFilter手动或通过authorizeHttpRequests()方法。

  • 应用程序将其配置FilterChainProxy为适用于转发和/或包含请求(例如spring.security.filter.dispatcher-types = request, error, async, forward, include)。

  • 应用程序可以将请求转发或包含到更高特权保护的端点。

  • 应用程序将 Spring Security 配置为通过以下方式应用于每个调度程序类型authorizeHttpRequests().shouldFilterAllDispatcherTypes(true)

作为参考,我很确定是解决漏洞的提交。

示范

该应用程序具有三个 URL:

  1. /索引页面

  2. /admin管理页面,要求用户提供基本身份验证(凭据“用户”/“通行证”)并分配 ROLE_ADMIN 角色

  3. /forward服务器端转发到管理页面

访问控制是通过 SecurityConfig 类中的 authorizeHttpRequests() 指定的。

.authorizeHttpRequests((authz) -> authz  .antMatchers("/").permitAll()  .antMatchers("/forward").permitAll()  .antMatchers("/admin").hasAuthority("ROLE_ADMIN")  .shouldFilterAllDispatcherTypes(true))

预期行为

  1. 用户访问/但未通过身份验证(感谢permitAll()

  2. 用户访问/admin。他们不提供身份验证,请求被拒绝(401 未授权)。

  3. 用户访问/admin。他们提供有效的身份验证,但请求仍然被拒绝(403 Unauthorized),因为他们没有所需的角色.hasAuthority("ROLE_ADMIN")

  4. 用户访问/forward。他们的请求通过 GET /forward 的安全过滤器链,它通过了有效(感谢permitAll())。控制器处理请求,并返回forward:/admin到 Dispatcher。按照spring.security.filter.dispatcher-typesand.shouldFilterAllDispatcherTypes(true)设置的指示,这是一个 FORWARD 类型,所以应该再次通过过滤器链。第二次通过过滤器会导致请求被拒绝(再次感谢hasAuthority("ROLE_ADMIN"))。

实际行为

用户访问/forward,请求通过过滤器链一次,并作为有效通过。转发被处理,但不是再次通过链传递,而是作为有效传递,并返回管理页面。


原文地址:https://github.com/SpindleSec/cve-2022-31692

点击阅读原文——跳转

原文始发于微信公众号(Ots安全):一个演示易受 Spring Security 授权绕过 CVE-2022-31692 攻击的应用程序的项目

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月29日18:27:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一个演示易受 Spring Security 授权绕过 CVE-2022-31692 攻击的应用程序的项目https://cn-sec.com/archives/1400006.html

发表评论

匿名网友 填写信息