目录
什么是shiro?
漏洞原理
漏洞复现
修复方案
什么是shiro?
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
漏洞原理
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令
处理cookie流程:
cookie的值是对相关信息进行序列化,再进行aes加密,再使用base64编码之后形成的。服务端接收cookie值时,也是按照以下步骤解析的:
1.检索RememberMe cookie的值
2.base64解码
3.使用aes解码(加密密钥硬编码)
4.进行反序列化操作(未做过滤处理)
在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞。
漏洞复现
搭建环境
使用docker拉取漏洞环境
docker pull medicean/vulapps:s_shiro_1
systemctl restart docker
docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1
搭建成功以后访问IP地址:8081
登录的时候使用bp抓包
看到响应包里有rememberme=deleteme字段,疑似存在shiro反序列化漏洞
直接工具梭哈
先输入目标地址,然后爆破密钥,最后直接爆破利用链及回显
根据日志可知目标网站存在shiro反序列化漏洞
利用命令执行模块远程执行代码 whoami
漏洞利用成功
可以继续利用该漏洞写入内存马
蚁剑上线成功
修复方案
升级shiro至最新版本1.7.0并生成新的密钥替换,注意妥善保管密钥