springboot 拒绝服务分析复现 CVE-2023-20883

admin 2024年2月10日20:12:52评论98 views字数 1036阅读3分27秒阅读模式

漏洞复现

CVE-2023-20883

我们在static目录下创建一个index.html

springboot 拒绝服务分析复现 CVE-2023-20883

直接访问可以访问

springboot 拒绝服务分析复现 CVE-2023-20883

添加畸形的accept头

springboot 拒绝服务分析复现 CVE-2023-20883

原理分析

Springboot的路由模式中,会先利用DispatcherServlet选取合适的handler,当handle不存在的时候,会调用默认的handle。

springboot 拒绝服务分析复现 CVE-2023-20883

handlemappinf是一个接口类,这里我们需要寻找WelcomePageHandlerMapping的getHandler方法,向上继承最终在父类AbstractHandlerMapping中调用。

springboot 拒绝服务分析复现 CVE-2023-20883

springboot 拒绝服务分析复现 CVE-2023-20883

漏洞点1在springboot的启动过程中,会默认注册一个欢迎页面,在org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration中可以看到有一个默认的配置目录。会从下面去获取默认的WelcomePage。

springboot 拒绝服务分析复现 CVE-2023-20883

当配置的index.html不为空,则会设置为默认的欢迎界面。

springboot 拒绝服务分析复现 CVE-2023-20883

漏洞点2

WelcomePageHandler会对accept的头部做校验。当头部匹配到mediaType=text/html ,* 等,就会调用super.getHandlerInternal(request),利用父类取寻找合适handle,否则就会返回null。

getAcceptedMediaTypes()

springboot 拒绝服务分析复现 CVE-2023-20883

springboot 拒绝服务分析复现 CVE-2023-20883

springboot 拒绝服务分析复现 CVE-2023-20883

当头部不存在上诉的参数,则会返回null,导致寻找不到默认的WelcomePageHandler。

springboot 拒绝服务分析复现 CVE-2023-20883

后面记录一点简单的初处理。/spring-boot-autoconfigure.jar!/org/springframework/boot/autoconfigure/web/servlet/WelcomePageHandlerMapping.class

getHandlerInternal()

springboot 拒绝服务分析复现 CVE-2023-20883

在通过了头部的校验,会调用/spring-web-5.3.21.jar!/org/springframework/web/util/UrlPathHelper.classgetRequestUri获取路径的相关信息

springboot 拒绝服务分析复现 CVE-2023-20883

在获取了路径以后,会尝试一系列的寻找合适的handle,没有找的的时候,会对路径进行匹配,如果是/,则会调用

rawHandler = this.getRootHandler();也就是欢迎页面的handle。

springboot 拒绝服务分析复现 CVE-2023-20883

原文始发于微信公众号(e0m安全屋):springboot 拒绝服务分析复现 CVE-2023-20883

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月10日20:12:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   springboot 拒绝服务分析复现 CVE-2023-20883https://cn-sec.com/archives/2248595.html

发表评论

匿名网友 填写信息