Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437)
一、漏洞原理
Apache Shiro框架提供了记住密码的功能,用户登录成功后会将用户信息加密,加密过程:用户信息=>序列化=>AES加密=>BASE64编码=>RememberMe Cookie值。如果用户勾选记住密码,那么在请求中会携带cookie,并且将加密信息存放在cookie的rememberMe字段里面,在服务器收到请求对RememberMe值,先进行base64解码然后AES解密在反序列化,这个加密过程如果我们知道AES加密的密钥,那么我们把用户信息替换成恶意命令,就导致了反序列化RCE漏洞。在shiro版本<=1.2.4中使用了默认的密钥,所以我们更容易触发该漏洞。
所以我们Payload产生的过程:
恶意命令=>序列化=>AES加密=>BASE64编码=>RememberMe Cookie值
二、环境搭建
本次实验使用vulhub进行环境搭建,需提前下载好vulhub。下载地址:https://vulhub.org/#/docs/
1. 进入漏洞环境
cd vulhub-master/shiro/CVE-2016-4437
2. 使用命令安装环境
docker-compose up -d
注意:首次使用需要配置docker国内源
# 若docker下载慢或出错,可以使用国内源
在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
目前可用的加速地址有:
网易
http://hub-mirror.c.163.com
ustc
https://docker.mirrors.ustc.edu.cn
百度云
https://mirror.baidubce.com/
3. 部署好了之后,使用docker命令查看地址,查看本机ip
# 查看部署端口
docker ps
'''
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6ffade0e3869 vulhub/shiro:1.2.4 "java -jar /shirodem…" 38 minutes ago Up 38 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cve-2016-4437_web_1
'''
# 查看本机ip
ip addr 或 ifconfig
三、漏洞复现
1. 使用shiro检查利用工具,j1anFen/shiro_attack: shiro反序列化漏洞综合利用,包含(回显执行命令/注入内存马) (github.com)
2. 使用shiro工具,爆破秘钥和利用链
3. 执行内存马注入
4. 使用蚁剑连接即可
注意:
若出现注入失败,请更换注入类型或者更新路径。若处理完之后还不能注入,估计是网站出问题了,我重启网站后可以成功注入!
参考:
Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437)_vulhubcve-2016-4437 漏洞防御-CSDN博客
评论 (0)