漏洞描述

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

漏洞产生原因
shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值-->Base64解码-->AES解密-->反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

payload 构造
恶意命令-->序列化-->AES加密-->base64编码-->发送cookie
在整个漏洞利用过程中,比较重要的是AES加密的密钥,该秘钥默认是默认硬编码的,所以如果没有修改默认的密钥,就自己可以生成恶意构造的cookie了(重点)

漏洞影响版本
Apache Shiro <= 1.2.4

如何判断网站是否使用Shiro

未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段
登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段
不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有rememberMe字段
勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中Cookie都会有rememberMe字段

可以尝试将cookie 改为rememberMe=1 ,来查看返回包是否有rememberMe=deleteMe字段。

31022-ujgyhq58vc.png

96016-agbfdvu9nih.png

漏洞复现
首先要找到AES的KEY值 有了KEY值之后我们就可以构造恶意的cookie
检测目标网站的key值
现在很多前辈都出了很多图形化工具了下面借用一下(雷石和飞鸿大佬的)

33631-dsv5n3koefr.png

10401-yftppv76s8.png

可以看到成功跑出了key值并且ceye收到了请求 证明存在此漏洞

71612-on3cep1ytte.png

借用飞鸿大佬的

82746-qi2l0d9dr6b.png

尝试反弹shell

17489-rqncz8anu3g.png


本文由 wulaoban 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论