shiro-550主要是文读由shiro的rememberMe内容反序列化导致的命令执行漏洞,造成的懂面都问的原因是默认加密密钥是硬编码在shiro源码中,任何有权访问源代码的试官人都可以知道默认加密密钥 。于是漏洞攻击者可以创建一个恶意对象,对其进行序列化
、文读编码 ,懂面都问的然后将其作为cookie的模板下载试官rememberMe字段内容发送
,Shiro 将对其解码和反序列化,漏洞导致服务器运行一些恶意代码。文读 特征 :cookie中含有rememberMe字段 修复建议: Apache Shiro 是懂面都问的一个强大易用的 Java 安全框架,提供了认证 、试官授权
、亿华云加密和会话管理等功能,对于任何一个应用程序 ,Shiro 都可以提供全面的安全管理服务。 在Apache Shiro<=1.2.4版本中AES加密时采用的key是硬编码在代码中的,于是我们就可以构造RememberMe的值
,然后让其反序列化执行。 Primary Cocnerns(基本关注点): Supporting Features(辅助特性): AES加密的密钥Key被硬编码在代码里 攻击机IP:192.168.0.109 靶机IP:192.168.72.128 存在Remember me选项,尝试抓包 Github上工具很多,我们随便拿一款来进行验证 爆破密钥成功后,即可执行命令 Shiro550和Shiro721的区别是什么 在Shiro721中,Shiro通过AES-128-CBC对cookie中的rememberMe字段进行加密,所以用户可以通过Padding Oracle加密生成的攻击代码来构造恶意的rememberMe字段,进行反序列化攻击
,需要执行的命令越复杂,生成payload需要的时间就越长 。 由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题
,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,用有效的RememberMe cookie作为Padding Oracle Attack 的前缀,然后制作精心制作的RememberMe来执行Java反序列化攻击 登录网站
,并从cookie中获取RememberMe。使用RememberMe cookie作为Padding Oracle Attack的前缀。加密syserial的序列化有效负载
,以通过Padding Oracle Attack制作精心制作的RememberMe。请求带有新的RememberMe cookie的网站
,以执行反序列化攻击。攻击者无需知道RememberMe加密的密码密钥
。 属于AES加密算法的CBC模式,使用128位数据块为一组进行加密解密,即16字节明文
,对应16字节密文, ,明文加密时,如果数据不够16字节,则会将数据补全剩余字节 Padding Oracle攻击可以在没有密钥的情况下加密或解密密文 Shiro Padding Oracle Attack(Shiro填充Oracle攻击)是一种针对Apache Shiro身份验证框架的安全漏洞攻击
。Apache Shiro是Java应用程序中广泛使用的身份验证和授权框架 ,用于管理用户会话、权限验证等功能。 Padding Oracle Attack(填充Oracle攻击)是一种针对加密算法使用填充的安全漏洞攻击
。在加密通信中
,填充用于将明文数据扩展到加密算法块大小的倍数。在此攻击中,攻击者利用填充的响应信息来推断出加密算法中的秘密信息 。 Shiro Padding Oracle Attack利用了Shiro框架中的身份验证过程中的一个漏洞 ,该漏洞允许攻击者通过填充信息的不同响应时间来确定身份验证过程中的错误。通过不断尝试不同的填充方式 ,攻击者可以逐步推断出加密秘钥,并最终获取访问权限 。 这种攻击利用了填充错误的身份验证响应来获取关于秘密信息的信息泄漏,然后根据这些信息进行进一步的攻击
。为了防止Shiro Padding Oracle Attack,建议及时更新Apache Shiro版本
,确保已修复该漏洞,并采取其他安全措施,如使用安全的加密算法和密钥管理策略
。 环境启动完成后,在本地浏览器访问靶场地址:your-ip:8080 0x01 登录成功后,我们从Cookie中获取到rememberMe字段的值 0x02 使用ysoserial生成Payload 0x03 使用rememberMe值作为prefix,加载Payload ,进行Padding Oracle攻击。 生成的payload.class内容越多时间就越长,所以尽量选择较短的命令执行来复现漏洞即可 。最终会生成如下rememberMe cookies 我们将跑出来的Cookie添加到数据包中进行发送
,就可以 发现在靶机中成果创建了对应的文件
。 到这未知其实经常遇到的Shrio漏洞已经表述的差不多了,下面几个是shiro存在但是在现实中利用难度大或者是比较少的洞,可以简单了解一下 在Apache Shiro 1.5.2以前的版本中,在使用Spring动态控制器时,攻击者通过构造..;这样的跳转,可以绕过Shiro中对目录的权限限制 。 URL请求过程
: 直接请求管理页面/admin/ ,无法访问 ,将会被重定向到登录页面 构造恶意请求/xxx/..;/admin/,即可绕过权限校验,访问到管理页面
: CVE-2020-11989的修复补丁存在缺陷,在1.5.3及其之前的版本,由于shiro在处理url时与spring仍然存在差异,依然存在身份校验绕过漏洞由于处理身份验证请求时出错,远程攻击者可以发送特制的HTTP请求,绕过身份验证过程并获得对应用程序的未授权访问。 该漏洞产生的原因主要是shiro层在处理url上和spring上存在差异,主要是在处理;上的问题
,通过构造含有;符号的url即可绕过shiro在权限上的处理,而spring不负责权限管控,所以最终会导致权限绕过
。ant风格的路径仅出现一个*时才能成功
,而**无法绕过,*
:匹配一个或者多个任意的字符 。 **:匹配零个或者多个目录。 /admin/admin 提示让我们登录 /admin/%3badmin Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。 1.9.1 之前的 Apache Shiro,RegexRequestMatcher 可能被错误配置为在某些 servlet 容器上被绕过。在正则表达式中使用带有.的 RegExPatternMatcher 的应用程序可能容易受到授权绕过
。 2022年6月29日
,Apache 官方披露 Apache Shiro 权限绕过漏洞(CVE-2022-32532)
,当 Apache Shiro 中使用 RegexRequestMatcher 进行权限配置,且正则表达式中携带“.”时,未经授权的远程攻击者可通过构造恶意数据包绕过身份认证。 Apache Shiro < 1.9.1 访问 抓包修改 需要携带token字段 改包绕过漏洞简介
漏洞原理
一
、文读Shiro简介
漏洞复现




Shiro-721反序列化漏洞(CVE-2019-12422)
漏洞简介
0x01 首先讲一下面试官经常会问到的源码下载一个问题漏洞原理
漏洞复现
1、拉取环境 复制docker pull vulfocus/shiro-721 docker run -d -p 8080:8080 vulfocus/shiro-7211.2. 






Shiro 认证绕过漏洞(CVE-2020-1957)
漏洞原理
漏洞复现
1
、权限配置 复制@Bean public ShiroFilterChainDefinition shiroFilterChainDefinition() { DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition(); chainDefinition.addPathDefinition("/login.html", "authc"); // need to accept POSTs from the login form chainDefinition.addPathDefinition("/logout", "logout"); chainDefinition.addPathDefinition("/admin/**", "authc"); return chainDefinition; }1.2.3.4.5.6.7.8. 2
、默认状态


Shiro 身份验证绕过 (CVE-2020-13933)
漏洞简介
漏洞复现
1、开启环境


Shiro 授权绕过 (CVE-2022-32532)
漏洞简介
漏洞概述
影响范围
利用流程



