当前位置: 首页 > news >正文

shiro认证绕过漏洞

原因一Tomcat 的路径解析行为核心规范 Servlet 规范 (JSR 369) 定义了如何处理请求 URI。分号 ; 被定义为路径参数Path Parameters 的分隔符。Tomcat 的实现 (org.apache.catalina.connector.Request):当收到请求 GET /kds-sale-api/;/web/correction/getOrganizationList HTTP/1.1 时Tomcat 开始解析 URI。parsePathParameters() 方法:扫描 URI 路径部分查找分号 ;。一旦找到分号它会将 ; 及其之后直到下一个 / 或字符串结束的部分例如 ;/视为路径参数。核心操作 Tomcat 会临时移除这些路径参数部分形成一个 “规范化路径 (Normalized Path)”。这个过程称为 “路径规范化”。示例原始 URI: /;/web/correction/getOrganizationList规范化后路径: /web/correction/getOrganizationList (;/ 被移除)getServletPath() 和 getPathInfo(): 这两个 HttpServletRequest 方法返回的值是基于规范化路径计算的不包含路径参数。request.getServletPath(): 返回匹配 Servlet 映射的部分request.getPathInfo(): 返回 Servlet 路径之后的额外路径信息Spring MVC 的路径映射处理DispatcherServlet 接收到 Tomcat 传递过来的请求。如前所述Tomcat 已经将规范化路径 (/web/correction/getOrganizationList) 设置到 request 的 servletPath 和 pathInfo 中。查找 Handler (Controller 方法):HandlerMapping (如 RequestMappingHandlerMapping) 负责根据请求查找对应的 Controller 方法。它主要使用 request.getServletPath() request.getPathInfo() (即 Tomcat 规范化后的路径 /web/correction/getOrganizationList) 来匹配 RequestMapping 注解中定义的路径。Controller 方法正常执行。结论由于 Tomcat 的规范化Spring MVC 最终处理的是 /web/correction/getOrganizationList。Controller 方法看到的路径是“干净”的与正常访问无异。漏洞的关键在于 Shiro 错误地让这个请求通过了安全检查。原因二Shiro 的路径匹配逻辑(存在漏洞的版本 1.7.1)Shiro 的保护机制Shiro 通过 ShiroFilter (通常映射到 /**) 拦截所有请求。它使用配置的 [urls] 规则和 PathMatchingFilterChainResolver 来决定哪个过滤器链如 authc应用于当前请求。PathMatchingFilterChainResolver 的工作流程:1. 获取请求路径 getPathWithinApplication(request)在存在漏洞的版本 ( 1.7.1) 中Shiro 的默认实现 (WebUtils.getPathWithinApplication) 可能直接使用了 request.getRequestURI() request.getRequestURI() 返回的是原始请求 URI /;/web/correction/getOrganizationList。注意这里仍然包含 ;/2. 路径匹配 (AntPathMatcher):Shiro 使用类似 Ant 风格的路径模式匹配器 (org.apache.shiro.util.AntPathMatcher) 将上一步得到的路径 ( /;/web/correction/getOrganizationList) 与 [urls] 中配置的模式 (如 /**) 进行比较。漏洞点 (CVE-2020-17523):CVE-2020-17523 (关键): 这是一个历史悠久的 Shiro 漏洞在 2020 年底被修复1.7.1 版本修复。在这个漏洞存在时Shiro 在进行路径匹配时没有正确处理分号 ;。AntPathMatcher 的缺陷 (旧版本): 在 1.7.1 之前的版本中AntPathMatcher 没有正确处理分号 ;。匹配失败的原因: 它将包含分号的路径 /;/web/correction/getOrganizationList 视为一个整体字符串。AntPathMatcher 在解析 /;/web/correction/getOrganizationList 时它看到 /; 不符合 ** 对“目录/文件”的预期。; 被当作普通字符但 ** 期望的是 / 分隔的层级结构。结果AntPathMatcher 认为 /;/web/correction/getOrganizationList 不匹配 模式 /**。绕过发生 因为请求路径 (/;/web/correction/getOrganizationList) 没有匹配到任何配置了安全约束 (如 authc) 的 [urls] 模式PathMatchingFilterChainResolver 会返回一个默认的、无安全控制的过滤器链通常是 anon 链。请求被允许通过 Shiro 的安全检查继续向下传递到 Servlet 容器如 Spring MVC DispatcherServlet。解决方案可以自定义一个过滤器在Shiro之前对URI进行处理版本升级Shiro 1.7.1 修复了 CVE-2020-17523核心修改在路径获取和匹配逻辑2.1 改进的路径获取 (WebUtils.getPathWithinApplication):获取路径后显式移除分号及其后的路径参数。这是对 Tomcat 规范化行为的主动模拟。处理请求 /;/web/correction/getOrganizationList移除路径参数: 查找 ;移除 ;/ → 得到 /web/correction/getOrganizationList2.2 改进的 AntPathMatcher :AntPathMatcher 本身也进行了增强确保在处理路径时能正确忽略或处理分号。匹配过程修复:Shiro 现在使用规范化后的路径 (/web/correction/getOrganizationList) 去匹配配置的模式 (/**)。/web/correction/getOrganizationList 显然匹配 /** → 触发 authc 链 → 要求认证 → 安全拦截生效。总结修复的核心是 强制 Shiro 使用与 Tomcat 和最终业务逻辑Spring MVC一致的、移除路径参数后的规范化路径进行安全规则匹配。
http://www.rkmt.cn/news/1409252.html

相关文章:

  • 国产大模型的 “万能接口”,用 DMXAPI 解锁业务新可能
  • 001、YOLO 发展简史:从 YOLOv1 到 YOLOv11,十年进化核心脉络梳理
  • 工业物联网实时分析范式跃迁_存算一体架构重塑数据底座从“数据沉睡“到“价值觉醒“:工业物联网实时分析的范式跃迁——存算一体架构如何重塑工业数据底座
  • PCA搞不定组间差异?试试有监督的PLS-DA:原理、适用场景与避坑指南
  • 别再死记硬背公式了!用NumPy手搓线性回归,从MSE、R²到闭式解一次搞懂
  • 别再只看平均响应时间了!用Python和Excel实战解读P90/P95/P99,让你的性能报告更专业
  • 告别网盘!用Syncthing v1.18.4在Windows电脑间搭建私有同步网盘(保姆级图文)
  • 别再折腾半天了!保姆级教程:在Ubuntu 22.04服务器上配置Jupyter Lab远程访问(含防火墙和后台运行)
  • 不只是打补丁:深入理解VMware Horizon Client在Win7安装时对VC++和系统组件的真实需求
  • 引入企业AI助手半年后踩过的坑和总结的经验
  • 三步打造你的私人象棋AI教练:Vin象棋深度使用指南
  • Day 07 - ES 模块化
  • Zotero 结合 Codex 打造智能学术工作流实战
  • 单片机IO口扩展方案:ULN2003A驱动芯片的应用与设计
  • Edge 浏览器实用功能全解析,这些隐藏技巧能大幅提升办公效率
  • 主流数字人平台如何避坑?2026价格透明与无隐藏收费平台对比
  • 别再调包了!用NumPy手写PCA降维,从协方差矩阵到特征向量保姆级推导
  • 《C语言电子书-2026最新版》-C语言开发环境搭建
  • 短视频矩阵怎么选?对比3大服务商后发现真相
  • 担心材料性能不稳定?这家UNS N07718高温合金厂商助您解决加工难题 - 品牌2025
  • 飞渡科技携手华为,共同开启空间智能新纪元
  • 【腾讯云】利用云解析DNS快速快速添加解析域名教程
  • 企业级 Multi-Agent 灰度发布:金丝雀部署+流量切分的实操指南
  • 用Python的NetworkX库玩转马尔可夫链:从天气预测到PageRank的实战演练
  • 2026年 宝钢HC900/1180CP吉帕钢推荐榜:高强度冷成型与轻量化解决方案的创新之选 - 品牌企业推荐师(官方)
  • STM32+LVGL项目实战:给你的智能家居界面做个漂亮的中文皮肤
  • RAG系列:#5 RAG中的11种分块策略
  • 别再只用apt update了!Ubuntu系统升级的正确姿势(附do-release-upgrade保姆级教程)
  • 2026年5月常州企业快餐配送品牌公司业内推荐:为何“常州锦润餐饮管理有限公司”备受青睐? - 2026年企业资讯
  • 2026年隔离墩模具/挡土墙模具厂家推荐:流水槽/排水沟/化粪池/护坡模具优质选型与口碑解析 - 品牌企业推荐师(官方)