shiro权限绕过漏洞

1.shiro权限绕过漏洞

1.1.漏洞成因分析

Apahce Shiro 由于处理身份验证请求时出错,存在“权限绕过漏洞”(漏洞编号:CVE-2020-11989),远程攻击者可以发送特制的HTTP请求,绕过身份验证过程,并获得对应用程序的未授权访问。

1.2.解决方案

1.电脑端:
(1)将jdk由1.7升级至1.8,因为shiro 1.7.1所需的运行环境是1.8。
(2)删除shiro开头的jar包,集成单点登录的shiro-cas 不用删
在这里插入图片描述

(3)将shiro版本号升级至1.7.1,加入以下jar包。
在这里插入图片描述
附件:
2.可能遇到的问题和解决方法:登录界面打不开,浏览器显示重复重定向。
(1)修改spring-context-shiro.xml(不同系统文件名不同)
loginUrl的属性值,原来:
在这里插入图片描述

改后:
在这里插入图片描述

1.3.验证方法

漏洞位置主要出现在org.apache.shiro.web.util.WebUtils#getPathWithinApplication中调用的getRequestUri方法。该漏洞可以用以下方法复现,首先在spring-context-shiro.xml中,配置 /hello/* = authc;
注意:ant风格的路径仅出现一个*时才能成功,而**无法绕过。
用Burpsuite复现,如果请求 /hello/aaa 那么将会被禁止。
在这里插入图片描述

这里可以通过url双编码的方式或地址栏加;/的方式来绕过。

在这里插入图片描述

### CVE-2020-11989:Apache Shiro 身份验证绕过漏洞解析 #### 漏洞概述 CVE-2020-11989 描述了一个存在于 Apache Shiro 中的身份验证绕过漏洞。攻击者可以通过特定方式构造请求来绕过身份验证机制,从而获得未经授权的访问权限[^2]。 #### 形成原因 该漏洞的根本原因是由于 `getServletPath(request)` 和 `getPathInfo(request)` 方法被组合使用而未进行 URL 解码操作所引起的。这种情况下,如果路径参数包含了编码后的特殊字符,则可能导致预期之外的行为发生。具体来说: - 当用户提交带有恶意构造的 URL 请求时, - 如果服务器端未能正确处理这些经过编码的数据流, - 则可能使得某些保护措施失效,进而允许非法用户的访问行为得以实现。 #### 攻击场景重现 为了成功利用这一缺陷实施攻击,通常需要满足以下几个条件之一: - 应用程序启用了 rememberMe 功能; - 存在一个可预测或者已知的有效用户名列表用于尝试登录; - 可以发送自定义 HTTP 头部信息给目标 Web 服务。 一旦上述前提成立,攻击者便可以精心设计一个包含 `%2e%2e` 或其他形式编码过的目录遍历字符串作为输入的一部分传递给应用程序。这将导致系统错误解释所提供的相对路径并最终触发安全检查失败的结果。 #### 风险评估 此类漏洞带来的主要风险在于它能够使未经许可的人获取敏感数据或执行特权命令。对于依赖于受影响版本 Apache Shiro 实现其安全性逻辑的企业而言,这是一个严重的安全隐患,因为它破坏了基本的信任边界,并且可能会造成不可逆转的信息泄露事件。 ```java // 示例代码展示如何防御此类型的攻击 String decodedUrl = URLDecoder.decode(url, StandardCharsets.UTF_8); if (!isValidPath(decodedUrl)) { throw new SecurityException("Invalid path detected"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值