1.简介:
Apache Shiro™(读作“sheeroh”,即日语“城”)是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Shiro使用了AES-128-CBC模式对cookie进行加密,导致恶意用户可以通过Padding Oracle攻击方式构造序列化数据进行反序列化攻击,例如SHIRO-550。(Shiro-721)
2.重现此问题的步骤:
- 登录网站,并从cookie中获取RememberMe。
- 使用RememberMe cookie作为Padding Oracle Attack的前缀。
- 加密ysoserial的序列化有效负载,以通过Padding Oracle Attack制作精心制作的RememberMe。
- 请求带有新的RememberMe cookie的网站,以执行反序列化攻击。
- 攻击者无需知道RememberMe加密的密码密钥。
3.影响版本
1.2.5,
1.2.6,
1.3.0,
1.3.1,
1.3.2,
1.4.0-RC2,
1.4.0,
1.4.1
4.漏洞复现
4.1 环境搭建
https://github.com/jas502n/SHIRO-721/blob/master/samples-web-1.4.1.war
下载sampies-web-1.4.1.war
放到tomcat的webapps目录下
进入tomcat的bin目录
启动tomcat
访问 http://127.0.0.1:8080/samples-web-1.4.1/
访问成功,环境搭建成功。4.2 漏洞利用
http://127.0.0.1:8080/samples-web-1.4.1/login.jsp
尝试登录,正确账号密码为root/secret
登录错误,Set-Cookie 为 rememberMe=deleteMe
登录成功,Set-Cookie 依然为 rememberMe=deleteMe
勾选Remenber Me,再登录
登录成功,设置了RemenberMe的cookie
4.3 漏洞攻击
提取RemenberMe的cookie,使用exp攻击
exp:https://github.com/3ndz/Shiro-721
运行脚本
python3 shiro_oracle_padding.py
收到dnslog信息
5.参考链接:
https://issues.apache.org/jira/browse/SHIRO-721
漏洞复现 https://www.anquanke.com/post/id/192819
https://github.com/3ndz/Shiro-721
EXP https://github.com/wuppp/shiro_rce_exp