Shiro漏洞复现Shiro-550

shiro简介

Apache Shiro是一种功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理, 可用于保护任何应用程序的安全。

Shiro提供了应用程序安全性API来执行以下方面:

1.身份验证:证明用户身份,通常称为用户"登录";

2.授权:访问控制; 

3.密码术:保护或隐藏数据以防窥视;

4.会话管理:每个用户的时间敏感状态。

shiro历史漏洞:Shiro-550\Shiro-721

影响版本:Apache Shiro <= 1.2.4

漏洞原理

Shiro框架下,用户登陆成功后会生成一个经过加密的Cookie。其CookieKey的值为RememberMeValue的值是经过序列化、AES加密和Base64编码后得到的结果。

服务端在接收到一个Cookie时,会按照如下步骤进行解析处理:

1.检索RememberMe Cookie的值

2.进行Base64解码

3.进行AES解码

4.进行反序列化操作

在第4步中的调用反序列化时未进行任何过滤,进而可以导致触发远程代码执行漏洞。

由于使用了AES加密,成功利用该漏洞需要获取AES的加密密钥,在Shiro1.2.4版本之前AES的加密密钥为硬编码,其默认密钥的Base64编码后的值为kPH+bIxk5D2deZiIxcaaaA==,于是就可得到Payload的构造流程:

恶意命令-->序列化-->AES加密-->base64编码-->发送Cookie

目前官方通过去掉硬编码的密钥每次生成一个密钥来解决其漏洞,但可以通过搜索引擎等方式收集到不同的密钥,提高对该漏洞的利用成功率。

Shiro漏洞搜索

通过fofa、zoomeye、shodan这类平台搜索相关特征来发现目标。
例如fofa的搜索关键词:

header="rememberme=deleteMe"

header="shiroCookie"

Shiro漏洞检测工具

https://github.com/fupinglee/ShiroScan

https://github.com/sv3nbeast/ShiroScan

https://github.com/insightglacier/Shiro_exploit

https://github.com/Ares-X/shiro-exploit

环境搭建

kali:搭建环境,接收反弹shell

windows 10:对kali发起攻击

使用vulhub靶场

cd  vulhub/shiro/CVE-2016-4437

docker-compose up -d

Shiro漏洞复现Shiro-550_第1张图片

漏洞发现

Shiro组件识别

使用burp suite,在访问及登录时抓包,如果响应头 set-cookie 中显示 rememberMe=deleteMe ,说明使用了 Shiro 组件。

Shiro漏洞复现Shiro-550_第2张图片

漏洞利用

使用图形化工具:ShiroExploit by 飞鸿

使用环境为:java8(java9无法打开工具)

输入目标地址,下一步

Shiro漏洞复现Shiro-550_第3张图片

 使用ceye.io检测,下一步

注意在使用回显进行漏洞检测时,会在目标网站上自动生成一个文件其中记录了执行命令的结果,所以不建议在正式环境测试中使用这种检测方式。

Shiro漏洞复现Shiro-550_第4张图片

 检测到目标存在Shiro反序列化漏洞

Shiro漏洞复现Shiro-550_第5张图片

Shiro漏洞复现Shiro-550_第6张图片

 反弹shell

先打开监听:nc -lvvp 2022

Shiro漏洞复现Shiro-550_第7张图片

 反弹成功

Shiro漏洞复现Shiro-550_第8张图片

工具二:shiro_attack2

Shiro漏洞复现Shiro-550_第9张图片

命令执行:

Shiro漏洞复现Shiro-550_第10张图片

参考链接:

Shiro-550反序列化漏洞复现_Luckysec的博客-CSDN博客_shoirt_attack使

你可能感兴趣的:(漏洞复现,java,开发语言)