文章目录
- Apache Shiro 漏洞复现
- 1. Apache Shiro 1.2.4 反序列化漏洞
- 1.1 漏洞描述
- 1.2 漏洞原理
- 1.3 漏洞复现
- 1.3.1 环境启动
- 1.4 漏洞利用
- 1.5 修复方案
Apache Shiro 漏洞复现
链接地址:Vulhub - Docker-Compose file for vulnerability environment
1. Apache Shiro 1.2.4 反序列化漏洞
1.1 漏洞描述
说明 | 内容 |
---|---|
漏洞编号 | CVE-2016-4437 |
漏洞名称 | Apache Shiro 1.2.4 反序列化漏洞 |
漏洞评级 | 高危 |
影响范围 | Apache Shiro 1.2.4 |
漏洞描述 | Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。 |
修复方案 | 打补丁,上设备,升级组件 |
1.2 漏洞原理
Apache Shiro 1.2.4及以前版本中,Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
1.3 漏洞复现
1.3.1 环境启动
说明:这里我修改了docker-compose.yml配置文件的端口号。
服务启动后,访问http://your-ip:8090
可使用admin:vulhub
进行登录。
登录成功
使用bp进行抓包
登录后的响应包,中的Set-Cookie字段,字段内容rememberMe=deleteMe,那么很可能Shiro框架,并且存在Shiro反序列化漏洞。
1.4 漏洞利用
利用Shiro工具进行链接
在URL中输入登录界面的路径然后点击密钥爆破,检测是否存在Shiro框架。
查看利用链,测试哪一个CC链可以利用。
然后输入命令执行即可
1.5 修复方案
-
确定自己使用的shiro版本要高于1.2.4。
-
在代码中全局搜索 “setCipherKey(Base64.decode(” 关键字,或者"setCipherKey"方法,Base64.decode()中的字符串就是shiro的密钥,要确保该密钥的安全性,千万不要使用公开的密钥。