【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

admin 2023年2月15日10:36:24评论28 views字数 3307阅读11分1秒阅读模式

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考
【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考
xxhzz
@PortalLab实验室

前言

在此之前,已经对CVE-2022-32532  Apache Shiro RegExPatternMatcher 认证绕过漏洞进行了分析,它和CVE-2022-22978漏洞产生原理上,本质是一样的。在分析这两个漏洞后,结合今年kcon议题《自动化API漏洞Fuzz实战》,产生了对漏洞挖掘关注点的一些思考。

CVE-2022-22978 Spring-security RegexRequestMatcher 认证绕过漏洞分析

漏洞描述

当Spring-security使用 RegexRequestMatcher 进行权限配置,由于RegexRequestMatcher正则表达式配置权限的特性,正则表达式中包含“.”时,未经身份验证攻击者可以通过构造恶意数据包绕过身份认证。

影响版本

Spring Security 5.5.x < 5.5.7

Spring Security 5.6.x < 5.6.4

环境搭建

使用github上的漏洞环境(https://github.com/XuCcc/VulEnv/tree/master/springboot/cve_2022_22978)

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

漏洞分析

具体漏洞产生的原理分析可参考CVE-2022-32532  Apache Shiro RegExPatternMatcher 认证绕过漏洞
构造的漏洞应用场景。

创建一个Controller,自定义接口。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

通过正则表达式添加认证配置。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考
在访问/admin/{name}接口时,需要认证才能访问。
因为之前对CVE-2022-32532  Apache Shiro RegExPatternMatcher 认证绕过的分析,此次很快就将漏洞点定位在spring-security-web-5.6.3.jar中。
org.springframework.security.web.uti.matcher.RegexRequestMatcher#matchers
【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

request.getServletPath()会对字符解码 并且会将;之后的字符到/字符删除,随后通过getServletPath获取URL,尝试提取?后的参数进行拼接,然后使用正则表达式匹配。

联想到在HttpServletRequest中URL解析函数中利用;进行权限绕过的场景:
其中HTTPServletRequest中对URL路径的几种解析方法。
request.getRequestURL():返回全路径;request.getRequestURI():返回除去Host(域名或IP)部分的路径;request.getContextPath():返回工程名部分,如果工程映射为/,则返回为空;request.getServletPath():返回除去Host和工程名部分的路径;request.getPathInfo():仅返回传递到Servlet的路径,如果没有传递额外的路径信息,则此返回Null;

当认证接口使用getRequestURI()或getRequestURL()函数来解析用户请求的URL时,若URL中包含了一些特殊符号,如分号;就可能产生限制绕过。

而在spring-security中,存在StrictHttpfirewall机制默认对特殊字符进行过滤,所以使用/admin/..;/1这种方式也就无法绕过。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

不过在之前分析shiro认证绕过也提到,在正则表达式中元字符“.”是匹配除换行符(n、r)之外的任何单个字符,在java中的正则默认情况下“.”也同样不会包含n、r字符,所以RegexRequestMatcher在进行正则匹配时不会处理n、r

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

在spring-security中利用换行符可实现权限认证进行绕过,r的URl编码为%0d,n的URL编码为%0a

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考
这样的绕过方式也和CVE-2022-32532  Apache Shiro RegExPatternMatcher 认证绕过如出一辙。

漏洞复现

访问/admin/1会302跳转至登陆页面进行权限验证。
【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考


使用/admin/1%0d%0a,成功绕过登陆认证。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

漏洞挖掘的思考

因为我自己是在分析了CVE-2022-32532后再分析CVE-2022-22978,也在用正则匹配流量的过程中发现过正则“.”号不匹配换行符的问题,在拜读了CVE-2022-32532发现者分析文章,了解了其发现漏洞的过程。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考


高效的漏洞挖掘方法

从漏洞分析的角度来讲,CVE-2022-32532 和CVE-2022-22978的原理其实很简单,那从漏洞发现和挖掘上看,在了解了类似于CVE-2022-22978这样的安全漏洞后或者是其他的过程发现一些特性,拓展到其他框架或组件中去寻找类似的安全问题,构造利用场景,这是无疑一种高效挖洞的方法。一些未知由语言特性、机制特性等引发的安全漏洞,也等着我们去发现和研究。

在这样的背景下,结合今年KCon《自动化API漏洞Fuzz实战》议题介绍的自动化API漏洞 Fuzz方案,让我觉得API由于本身的特性和发展,以及产生的安全问题,也会逐渐成为漏洞挖掘中一个重要的关注点。

API特性与发展

简单介绍下,API本质上是一种跨语言、跨架构的数据传输约定,API连接了不同层次、不同编程语言、不同厂商 所研发的软件,让数据可以跨应用软件进行自由流动。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考
API本身的概念,这里不用做过多介绍。大多数人关注API安全可能在于数据隐私保护方面,这也是API安全近几年崛起的主要原因之一,对于攻击者而言,攻击API从而获取系统权限或者数据的成本也是极低的。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

看得出API也在这个万物互联互通的时代正高速发展。

浅谈自动化API Fuzz到高危漏洞挖掘

API本身的会存在涉及到各种安全风险,而其大部分安全问题可进阶利用,产生危害更大的安全问题。
【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考
通过自动化API fuzz,发现API的安全漏洞,再对这些漏洞可以进一步挖掘和利用,例如通过API未授权漏洞、权限绕过、安全性错误配置等,进一步挖掘文件上传、命令执行等等漏洞。

API Fuzz流程。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

当然,通过API Fuzz挖掘漏洞在SRC挖掘的过程中,同样适用。具体可参考https://mp.weixin.qq.com/s/MCtwiT93Fo9Js9ekuD-8wA中的实际案例。

在如今安全研究漏洞挖掘卷到飞起的天下,挖掘高危漏洞,安全研究员除了自身扎实的基础、丰富的漏洞经验外,可能有时还需要一点运气或灵感。通过自动化API Fuzz去挖掘新的高危漏洞的方式,也可以成为一个新的卷点。

【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

参考材料

1.https://mp.weixin.qq.com/s?__biz=Mzg3NDcwMDk3OA==&mid=2247484068&idx=1&sn=89ea1b1be48a0cb7f93a4750765719d1&chksm=cecd8b79f9ba026f7fbf52771e41272d684fc3af5175587f768082f8dbaee12d6d33bb892ceb&scene=126&&sessionid=1662041689#rd
2.https://xz.aliyun.com/t/11501#toc-2
3.https://mp.weixin.qq.com/s/GiQJj2iD3ta8ltsHX9fYJw

4.https://github.com/XuCcc/VulEnv/tree/master/springboot/cve_2022_22978

关于Portal Lab

星阑科技 Portal Lab 致力于前沿安全技术研究及能力工具化。主要研究方向为API 安全、应用安全、攻防对抗等领域。实验室成员研究成果曾发表于BlackHat、HITB、BlueHat、KCon、XCon等国内外知名安全会议,并多次发布开源安全工具。未来,Portal Lab将继续以开放创新的态度积极投入各类安全技术研究,持续为安全社区及企业级客户提供高质量技术输出。


【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

原文始发于微信公众号(星阑PortalLab):【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月15日10:36:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【技术干货】CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考https://cn-sec.com/archives/1283429.html

发表评论

匿名网友 填写信息