011 Apache Shiro 反序列化命令执行漏洞

admin 2022年3月4日16:00:50评论136 views字数 3545阅读11分49秒阅读模式

2.Apache Shiro 反序列化命令执行漏洞

漏洞名称

Apache Shiro 反序列化命令执行漏洞

漏洞地址

https://www.wangan.com/docs/418

漏洞等级

超危

漏洞描述

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

Apache Shiro 1.2.4 及以前版本中,加密的用户信息序列化后存储在名为 remember-me 的 Cookie 中。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。攻击者可以使用 Shiro 的默认密钥伪造用户 Cookie,触发 Java 反序列化漏洞,进而在目标机器上执行任意命令。

漏洞成因

Apache Shiro框架提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。

Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行序列化、AES加密、Base64编码操作。

在识别身份的时候,需要对Cookie里的rememberMe字段解密。根据加密的顺序,不难知道解密的顺序为:

1.获取rememberMe cookie2.base64 decode3.解密AES(加密密钥硬编码)4.反序列化(未作过滤处理)

但是,AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

漏洞危害

影响Shiro <= 1.2.4版本,当未设置用于“remember me” 特性的AES密钥时,存在反序列化漏洞,可远程命令执行。

修复方案

1.升级Shiro版本到1.2.5及以上。2.现在使用的rememberMe的AES加密密钥泄露,请自己base64一个AES的密钥,或者利用官方提供的方法生成密钥

org.apache.shiro.crypto.AbstractSymmetricCipherService#generateNewKey()


测试过程

测试环境

Vulhub

https://vulhub.org/

011 Apache Shiro 反序列化命令执行漏洞
image-20211223072737368

https://github.com/vulhub/vulhub

https://github.com/vulhub/vulhub/archive/refs/heads/master.zip

011 Apache Shiro 反序列化命令执行漏洞
image-20211223072919389

使用Vulhub一键搭建漏洞测试靶场

docker-compose up -d

安装 docker 和 docker-compose 后即可开始使用Vulhub。

Download the latest version of the vulhub git clone https://github.com/vulhub/vulhub.git  Entry vulnerability directory cd /path/to/vuln/ Compile (optional) docker-compose build Run docker-compose up -d 

使用方法

下载项目wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zipunzip vulhub-master.zipcd vulhub-master进入某一个漏洞/环境的目录cd flask/ssti自动化编译环境docker-compose build启动整个环境docker-compose up -d

测试完成后,删除整个环境

docker-compose down -v

执行如下命令启动一个使用了 Apache Shiro 1.2.4 的 Web 服务:

cd Desktop/vulhub-master/shiro/CVE-2016-4437docker-compose up -d
011 Apache Shiro 反序列化命令执行漏洞
image-20211223073536137

服务启动后,访问 http://192.168.0.104:8080 可使用 admin:vulhub 进行登录。

http://192.168.0.104:8080

011 Apache Shiro 反序列化命令执行漏洞
image-20211223073801768

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

Burp Shiro 漏洞检测插件

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

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

011 Apache Shiro 反序列化命令执行漏洞
image-20211223074951996
011 Apache Shiro 反序列化命令执行漏洞
image-20211223080046216

Shiro 漏洞检测工具

011 Apache Shiro 反序列化命令执行漏洞
image-20211223080311061

工具一:ShiroExploit By 飞鸿

https://github.com/feihong-cs/ShiroExploit-Deprecated

011 Apache Shiro 反序列化命令执行漏洞
image-20211223080440439

ShiroExploit v2.51 Final

https://github.com/feihong-cs/ShiroExploit-Deprecated/releases

https://github.com/feihong-cs/ShiroExploit-Deprecated/releases/download/v2.51/ShiroExploit.V2.51.7z

ShiroExploit v2.51 Final1.增加 2 种新的回显方式 TomcatEcho2, JBossEcho,将 WeblogicEcho1  WeblogicEcho2 进行了合并2.默认不启用 WindowEchoUse with caution3.Shiro550VerifierUsingEcho 回退到 URLDNS 方法时,由原先的使用 ceye.io 修改为使用 dnslog.cn4.增加对设置 Http 代理的支持5.增加 About 按钮
011 Apache Shiro 反序列化命令执行漏洞
image-20211223080642373

使用工具检测 Shiro-550 漏洞

011 Apache Shiro 反序列化命令执行漏洞
image-20211223081618704

选择漏洞检测方式

011 Apache Shiro 反序列化命令执行漏洞
image-20211223081654370

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

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

011 Apache Shiro 反序列化命令执行漏洞
image-20211223081843744
011 Apache Shiro 反序列化命令执行漏洞
image-20211223081527145

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

nc -lvvp 8888
011 Apache Shiro 反序列化命令执行漏洞
image-20211223125109292

然后用ShiroExploit工具的反弹Shell给远程攻击机器VPS(82.156.13.32)的8888端口

011 Apache Shiro 反序列化命令执行漏洞
image-20211223125445523

上述工具利用成功后,在攻击机器上成功接收到了反弹的Shell

011 Apache Shiro 反序列化命令执行漏洞
image-20211223125700393

工具二:shiro_attack By j1anFen

https://github.com/j1anFen/shiro_attack

011 Apache Shiro 反序列化命令执行漏洞
image-20211223102357246

shiro反序列化漏洞综合利用 v2.2

https://github.com/j1anFen/shiro_attack/releases

shiro_attack_2.2

1.修复自定义参数定义失效2.添加filter马

https://github.com/j1anFen/shiro_attack/releases/download/2.2/shiro_attack_2.2.zip

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

011 Apache Shiro 反序列化命令执行漏洞
image-20211223103959522

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

011 Apache Shiro 反序列化命令执行漏洞
image-20211223104143883

复测情况

已修复

测试人员

利刃信安

原文始发于微信公众号(利刃信安):011 Apache Shiro 反序列化命令执行漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月4日16:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   011 Apache Shiro 反序列化命令执行漏洞http://cn-sec.com/archives/694589.html

发表评论

匿名网友 填写信息