“ Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易用,同时也能提供健壮的安全性。”
文章目录:
1、Shiro rememberMe反序列化漏洞(Shiro-550)
1.1 漏洞原理
1.2 影响版本
1.3 漏洞特征
1.4 漏洞利用
1.4.1 利用方式一:反弹shell
1.4.2 利用方式二:写入文件
2、Shiro Padding Oracle Attack(Shiro-721)
2.1 漏洞原理
2.2 影响版本
2.3 漏洞利用
3、一键自动化漏洞利用工具
3.1 Shiro-550
3.2 Shiro-721
1.1 漏洞原理
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
那么,Payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值
在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是十分的简单。
1.2 影响版本:Apache Shiro < 1.2.4
1.3 特征判断:
返回包中包含rememberMe=deleteMe字段。
1.4 漏洞利用
这里我们使用一个Shiro_exploit工具,检查是否存在默认的key。
Github项目地址:
使用示例:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iNxczMwEDN0gzMmNjZzImMiFDO4ITZ5QmZmVGZjBjYl9CX4EzLcZDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL1M3Lc9CX6MHc0RHaiojIsJye.png)
通过获取到的key,常见的漏洞利用方式有两种:反弹shell和写入文件。
漏洞利用方式一:反弹shell
1、制作反弹shell代码
监听本地端口
Java Runtime 配合 bash 编码,在线编码地址:
生成编码:
2、通过ysoserial中JRMP监听模块,监听6666端口并执行反弹shell命令。
3、使用shiro.py 生成Payload
shiro.py代码如下:
4、构造数据包,伪造cookie,发送Payload。
nc监听端口,shell成功反弹:
java监听接口,查看服务器连接情况:
漏洞利用方式二:写入文件
1、生成poc.ser文件
2、使用Shiro内置的默认密钥对Payload进行加密:
java调试:
调试代码:
3、发送rememberMe Cookie,即可成功执行命令。
在目标服务器/tmp目录下,生成success文件。
2.1 漏洞原理
由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。
2.2 影响版本:Apache Shiro < 1.4.2版本。
2.3 漏洞利用
1、登录Shiro网站,从cookie中获得rememberMe字段的值。
2、利用DNSlog探测,通过ysoserial工具payload。
3、使用rememberMe值作为prefix,加载Payload,进行Padding Oracle攻击。
github项目地址:
爆破成功,输出Result:
4、使用构造的rememberMe攻击字符串重新请求网站
5、成功触发Payload,在DNSLog获取到目标IP。
ShiroExploit:支持对Shiro-550(硬编码秘钥)和Shiro-721(Padding Oracle)的一键化检测,支持简单回显。
Shiro-550,只需输入url,即可完成自动化检测和漏洞利用。
Shiro-721,需输入url,提供一个有效的rememberMe Cookie,并指定目标操作系统类型
转一转
赞一赞
看一看