Shiro-550反序列化漏洞复现


0x01 漏洞简介

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。

Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

  • 影响版本 Shiro <= 1.2.4

0x02 环境准备

  • Ubuntu(192.168.126.130) 搭建漏洞环境
  • Kali(192.168.126.128) 接收反弹Shell
  • Windows(192.168.129) 攻击主机

使用 vulhub 可以快速搭建漏洞环境。

cd /vulhub/shiro/CVE-2016-4437
docker-compose up -d

0x03 漏洞检测

1. 验证Shiro框架

首先,使用BurpSuite进行抓包,在请求包中的cookie字段中添加rememberMe=123;,看响应包header中是否返回rememberMe=deleteMe值,若有,则证明该系统使用了Shiro框架。

2. Burp Shiro 漏洞检测插件

在BurpSuite的扩展(Extend)中安装并启动Shiro检测插件

当BurpSuite抓取到Shiro的数据包时会自动进行检测Key,当发现存在Shiro默认key时会有相应的告警

3. Shiro 漏洞检测工具

3.1 工具一:ShiroExploit By 飞鸿

使用工具检测 Shiro-550 漏洞

选择漏洞检测方式

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

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

3.2 工具二:shiro_attack By j1anFen

使用shiro_attack进行爆破Shiro密钥检测漏洞,当目标系统存在漏洞时,检测结果如下图所示:

0x04 漏洞利用

1. 命令执行

使用shiro_attack工具可以直接执行命令并回显结果

2. 反弹Shell

首先,在kali上开启nc监听本地1111端口,用来接收反弹的Shell

nc -l -p 1111

然后用ShiroExploit工具的反弹Shell给Kali(192.168.126.128)的1111端口。

上述工具利用成功后,在Kali上成功接收到了反弹的Shell

0x05 修复方案

  • 升级Shiro至新版本;
  • 更改默认密钥;

参考文章


文章作者: LuckySec
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuckySec !
评论
 上一篇
Redis未授权访问漏洞复现 Redis未授权访问漏洞复现
redis是一个数据库,默认端口是6379,redis默认是没有密码验证的,可以免密码登录操作,攻击者可以通过操作redis进一步控制服务器。
2020-08-22
下一篇 
S2-009远程代码执行复现 S2-009远程代码执行复现
S2-009漏洞通过将OGNL表达式放在某个example参数中,然后使用/helloword.acton?example=&(example)('xxx')=1的方法来执行它,从而绕过官方对#、\等特殊字符的防御。
2020-08-20
  目录