【Vulfocus】shiro框架漏洞

Shiro框架漏洞

简介

Apache Shiro是一个功能强大且易于使用的Java安全框架,功能包括身份验证,授权,加密和会话管理。解密流程中存在反序列化,加密的密钥和AES的加密处理模式导致了漏洞的产生。本文注重漏洞复现,代码细节在java代码审计部分进行分析。

Shiro漏洞原理

Apache Shiro框架提供了记住我的功能(RemeberMe),用户记住密码,登录成功后,服务端会生成经过加密并编码的cookie。cookie的key为RemeberMe,然后返回客户端。解密时,从cookie中取出,进行base64解密、decrypt解密,在decrypt解密时反序列化,从而导致了反序列化漏洞。

加密时:序列化转为二进制、encrypt加密(AES)、base64加密、放入cookie

解密时:从cookie中取出、base64解密、decrypt解密(AES)、反序列化

Shiro漏洞指纹

Shiro550:

在请求包的Cookie中,给remeberMe字段赋任意值,返回包中存在set-Cookie:remeberMe=deleteMe

URL中有shiro字样,有时候服务器不会主动返回remeberMe=deleteMe,直接发包即可

Shiro721:
输入正确的账号密码,抓返回包获取
rememberMe=xGGhRPquO7E7uTXj3/Z+wf52WwAEopPLtI2RROCC/XpGwQPYbuB3l5ThW7wu2WOmvStqOYfIPwU3jAqroS+8t01pZJDw2G0bxuVwO0MUihZyAipHVq23cSbzuks7xJzE3i81ROvo4tdlRy1HNNGOLBwfxU9YdbsfqzpQ5bs2Xd04DMi4+vFJmglNa7gqP56OcujQUXUw9QLPj45qn5Q6iQ9/Kcb3x6iVvIywgXdBUTGH9c+p4Q0O/s8qkrHbGhjI65piTeU1vM5w9uufU/9uebTA3Qgfk9RiqT2NnS9Wbg1N2SgqPPK3c1Gga/9Yw5uJHQeAd8xECZH+gUOGzn02FhSobabi0c4YSPs3kT3OOLby5Zjqq50EFNo5a6+kpEBFZIInqiTJG9WKwd+QrD9lPByyjGO7dLPRGzMjgJjfNzzQ/nuhiprrJREyHIgSfCciQsLlrIyiNwJ5jBGtpz1eh9slQXhz5yyFy8bU0GIPI+RC2kzsTJj33/b6SxigvE9U 就是比较长的 哈哈哈哈

Shiro550

550原理

shiro-550(shiro<1.2.5)主要是由shiro的rememberMe内容反序列化导致的命令执行漏洞,造成的原因是AES密钥被硬编码在shiro源码中,这就导致了只要知道AES密钥,就可以通过在cookie的rememberMe字段插入payload实现任意代码执行。在这以后shiro使用随机密钥,而不再硬编码。

漏洞复现

使用Vufocus复习shrio550漏洞

访问测试环境

指纹探测,修改rememberMe的值,返回包存在Set-Cookie:remeberMe=deleteMe

确认是shiro直接上工具,爆破密钥,爆破利用链。

命令执行

Shiro721

721原理

RememberMe使用AES-128-CBC模式加密,容易受到Padding Oracle攻击,AES的初始化向量iv就是rememberMe的base64解码后的前16个字节,攻击者只要使用有效的RememberMe cookie作为Padding Oracle Attack 的前缀,然后就可以构造RememberMe进行反序列化攻击,攻击者无需知道RememberMe加密的密钥。Shiro-721所影响的版本:1.2.5,1.2.6,1.3.0,1.3.1,1.3.2,1.4.0-RC2,1.4.0,1.4.1 小于1.4.2都可以试试

漏洞复现

指纹探测,输入正确的账号密码,抓包获取rememberMe

rememberMe=xGGhRPquO7E7uTXj3/Z+wf52WwAEopPLtI2RROCC/XpGwQPYbuB3l5ThW7wu2WOmvStqOYfIPwU3jAqroS+8t01pZJDw2G0bxuVwO0MUihZyAipHVq23cSbzuks7xJzE3i81ROvo4tdlRy1HNNGOLBwfxU9YdbsfqzpQ5bs2Xd04DMi4+vFJmglNa7gqP56OcujQUXUw9QLPj45qn5Q6iQ9/Kcb3x6iVvIywgXdBUTGH9c+p4Q0O/s8qkrHbGhjI65piTeU1vM5w9uufU/9uebTA3Qgfk9RiqT2NnS9Wbg1N2SgqPPK3c1Gga/9Yw5uJHQeAd8xECZH+gUOGzn02FhSobabi0c4YSPs3kT3OOLby5Zjqq50EFNo5a6+kpEBFZIInqiTJG9WKwd+QrD9lPByyjGO7dLPRGzMjgJjfNzzQ/nuhiprrJREyHIgSfCciQsLlrIyiNwJ5jBGtpz1eh9slQXhz5yyFy8bU0GIPI+RC2kzsTJj33/b6SxigvE9U

确认rememberMe是shiro721直接上工具。因为Shiro是用AES-CBC加密模式,破解CBC龟速,运行后会在后台不断爆破,payload越长所需爆破时间就越长。

我用飞鸿大佬的工具,tm爆了4个小时,没出来,下班了,放个工具图

posted @ 2022-06-08 09:24  九天揽月丶  阅读(785)  评论(0编辑  收藏  举报