1.简介:

Apache Shiro™(读作“sheeroh”,即日语“城”)是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Shiro使用了AES-128-CBC模式对cookie进行加密,导致恶意用户可以通过Padding Oracle攻击方式构造序列化数据进行反序列化攻击,例如SHIRO-550。(Shiro-721)

2.重现此问题的步骤:

  1. 登录网站,并从cookie中获取RememberMe。
  2. 使用RememberMe cookie作为Padding Oracle Attack的前缀。
  3. 加密ysoserial的序列化有效负载,以通过Padding Oracle Attack制作精心制作的RememberMe。
  4. 请求带有新的RememberMe cookie的网站,以执行反序列化攻击。
  5. 攻击者无需知道RememberMe加密的密码密钥。

    3.影响版本

    1. 1.2.5,
    2. 1.2.6,
    3. 1.3.0,
    4. 1.3.1,
    5. 1.3.2,
    6. 1.4.0-RC2,
    7. 1.4.0,
    8. 1.4.1

    4.漏洞复现

    4.1 环境搭建

    https://github.com/jas502n/SHIRO-721/blob/master/samples-web-1.4.1.war
    image.png
    下载sampies-web-1.4.1.war
    放到tomcat的webapps目录下
    进入tomcat的bin目录
    启动tomcat
    访问 http://127.0.0.1:8080/samples-web-1.4.1/
    image.png
    访问成功,环境搭建成功。

    4.2 漏洞利用

    http://127.0.0.1:8080/samples-web-1.4.1/login.jsp
    image.png
    尝试登录,正确账号密码为root/secret
    image.png
    登录错误,Set-Cookie 为 rememberMe=deleteMe

image.png
登录成功,Set-Cookie 依然为 rememberMe=deleteMe

勾选Remenber Me,再登录
image.png
image.png
登录成功,设置了RemenberMe的cookie

4.3 漏洞攻击

提取RemenberMe的cookie,使用exp攻击
exp:https://github.com/3ndz/Shiro-721

运行脚本
python3 shiro_oracle_padding.py
image.png
image.png
收到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