shiro介绍
**Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。**Shiro框架直观、易用,同时也能提供健壮的安全性
Shiro-550 反序列化rce复现
环境搭建
cd vulhub-master/shiro/CVE-2016-4437
docker-compose up -d
漏洞原理
Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的。
在服务端接收cookie值时,按照如下步骤来解析处理
1、检索RememberMe cookie 的值
2、Base64解码
3、使用AES解密(加密密钥硬编码)
4、进行反序列化操作(未作过滤处理)
在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞。
尽管目前已经更新了许多版本,官方并没有对反序列化漏洞本身解决,而是通过去掉硬编码的密钥,使其每次生成一个密钥来解决该漏洞。但是,目前一些开源系统、教程范例代码都使用来固定的编码,这里我们可以通过搜索引擎、github等来收集密钥,提高漏洞检测与利用的成功率。
只要rememberMe的AES加密秘钥泄露,无论shiro是什么版本都会导致反序列化漏洞。
该漏洞已经曝光几年,但是在实战中仍然比较实用,每年的护网都能起到不小的作用,是护网三大洞之一
漏洞复现
输入账号密码 , 抓包
存在shiro , 这里直接使用工具构造反序列化实现rce
5.3综合利用工具
burp被动扫描插件
Plain Text
Copy
shiroScan https://github.com/pmiaowu/BurpShiroPassiveScan
shiro利用工具
Plain Text
Copy
shiro_attack-4.5.3-SNAPSHOT-all.jar shiro key字典 github 10w+