安全播报

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
CVE-2022-32532 Apache Shiro RegExPatternMatcher 认证绕过漏洞
2022-07-12 13:54:20 【

    前言

    结合自身经历,在使用正则表达式去匹配流量特征时,由于正则表达式中元字符“.”不匹配换行符(\n、\r)导致一直提取不上所需的流量。而如今,之前踩过的坑却出现在了Apache Shiro框架之中……

    

    漏洞描述

    6月29日,Apache 官方披露 Apache Shiro 权限绕过漏洞(CVE-2022-32532),当 Apache Shiro 中使用 RegexRequestMatcher 进行权限配置,且正则表达式中携带“.”时,未经授权的远程攻击者可通过构造恶意数据包绕过身份认证。

    相关介绍

    Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,它可以执行身份验证、授权、加密和会话管理,可以用于保护任何应用程序——从命令行应用程序、移动应用程序到最大的 web 和企业应用程序。

    

    利用范围

    Apache Shiro < 1.9.1

    漏洞分析

    环境搭建

    这里使用此漏洞提交者4ra1n 师傅的漏洞demo(https://github.com/4ra1n/CVE-2022-32532)进行复现分析。

    漏洞原理

    在漏洞分析之前,先了解一下相关漏洞产生原理。

    在正则表达式中元字符.是匹配除换行符(\n、\r)之外的任何单个字符。

    

    要匹配包括 \n 在内的任何字符,需使用像(.|\n)的模式。

    

    结合4ra1n师傅的分析,在java中的正则默认情况下.也同样不会包含\n、\r字符,因此在一些场景中,使用正则.的规则就有可能被绕过。

    

    新增Pattern.DOTALL模式后,正则表达式.就可以匹配任何字符包括换行符。

    

    源码分析

    结合shiro源码和漏洞场景分析,在shiro-core-1.9.0.jar中存在一个RegExPatternMatcher类。

    org.apache.shiro.util.RegExPatternMatcher.class。

    

    RegexRequestMatcher和AntPathMatcher类似,提供请求路径匹配功能及拦截器参数解析的功能。而一般情况下RegexRequestMatcher类是不会在项目中出现,需要用户自己配置。

    分析RegexRequestMatcher用于匹配的代码。

    

    可以看到,这里正如上面漏洞原理分析的一样,pattern存在带.的正则表达式匹配,若source中存在\r或\n字符时,将判断错误。

    而在4ra1n师傅构造的漏洞场景中。

    

    自定义了Filter,增加权限认证场景:

    1、判断请求头中的Token是否匹配。

    2、如果不存在Token或者Token头错误则认为认证失败。

    并且配置了自定义的AccessControlFilter实现类,并将 PatternMatcher配置为RegExPatternMatcher。

    同时自定义MyShiroFilterFactoryBean。

    

    继承自ShiroFilterFactoryBean类;设置匹配规则为/permit/.*字符串,表示需要拦截/permit/下所有的路径。

    

    在自定义controller中,配置了/permit/{value}这样从路径取参数的路由和/permit/*这样的通配路由。

    漏洞复现

    当访问/permit/any,返回拒绝访问。

    

    当访问/permit/a%0any或/permit/a%0dny时,返回success,即认证成功。

    

    

    

    所以在如上满足使用了RegExPatternMatcher类,设置带有.的正则表达式等条件的场景下,利用该漏洞可实现权限认证绕过。

    

】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇微软7月安全更新多个产品高危漏洞 下一篇显示IP属地,会泄露个人信息吗?

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:010-56157787 ,010-56159998
企业QQ:4000043998
技术支持:010-56159998
E-Mail:800@fangyuba.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:4000043998 01056155355
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800