• 【渗透测试】Apache Shiro系列漏洞


    目录

     

    🍨 Shiro-550(CVE-2016-4437)

    🍦 1、漏洞原理

    🍦 2、影响版本

    🍦 3、漏洞利用

    🍨 Shiro-721

    🍦 1、漏洞原理

    🍦 2、影响版本

    🍦 3、漏洞利用

    🍨 Shiro认证绕过漏洞(CVE-2020-1957)

    🍦 1、漏洞原理

    🍦 2、影响版本

    🍦 3、漏洞验证

    🍨 Shiro 身份验证绕过 (CVE-2020-13933)

    🍦 1、漏洞原理

    🍦 2、影响版本

    🍦 3、漏洞验证


     

    🍨 Shiro-550(CVE-2016-4437)

    🍦 1、漏洞原理

        Apache Shiro框架提供了记住我(RememberMe)的功能,关闭浏览器再次访问时无需再登录即可访问。shiro默认使用CookieRememberMeManager,对rememberMe的cookie做了加密处理,在CookieRememberMeManaer类中将cookie中rememberMe字段内容先后进行序列化、AES加密、Base64编码操作。服务器端识别身份解密处理cookie的流程则是:

        获取rememberMe cookie ->base64 解码->AES解密(加密密钥硬编码)->反序列化(未作过滤处理)。但是AES加密的密钥Key被硬编码(密钥初始就被定义好不能动态改变的)在代码里,这就意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者可以构造一个恶意的对象,并且对其序列化、AES加密、base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终就造成了反序列化的RCE漏洞。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都可能会导致该漏洞的产生.硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中。如果在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段,那么就可能存在此漏洞。

    🍦 2、影响版本

    Apache Shiro <= 1.2.4

    🍦 3、漏洞利用

        输入任意账号密码,勾选Remember me,登录,查看发现响应包中存在rememberMe=deleteMe字段,说明可能存在Shiro反序列化漏洞,利用综合利用工具进行测试,进行秘钥爆破。

     

    6cb1d4f2657449d88eb3e37215e69131.png

     878cd73b95d5415f83df3d7dfcc57ec8.png

     

    🍨 Shiro-721

    🍦 1、漏洞原理

        由于Apache Shiro cookie中通过AES-128-CBC模式加密的rememberMe字段存在问题,用户可通过Padding Oracle加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行rememberMe cookie通过AES-128-CBC模式加密,易受到Padding Oracle攻击。可以通过结合有效的rememberMe cookie作为Padding Oracle攻击的前缀,然后精⼼制作rememberMe来进⾏反序列化攻击。Tip:在1.2.4版本后,shiro已经更换AES-CBC为AES-GCM,无法再通过Padding Oracle 遍历 key

    🍦 2、影响版本

    Apache Shiro <= 1.4.1

    🍦 3、漏洞利用

    利用工具的攻击方法同Shiro550一致,下面简单讲述手动攻击的步骤

    🍬(1)利用技巧

    🍼 该漏洞需要登录后获取到合法的Cookie: rememberMe=XXX后才可以进行利用, 看起来不是很好利用 但实际上有一些网站是开放注册的, 而且这个洞不需要知道服务端密钥 所以后续的利用还是可以同Shiro-550一样利用, 而且这里是AES加密的, 自带过WAF属性 ;

    🍼 如果攻击没有生效, 可以试一下删除Cookie中的JSESSIONID 字段, 很多时候这个字段存在的话, 服务端不会去处理 rememberMe。

    🍬(2)攻击流程

    🍼 登录网站(勾选Remember),并从Cookie中获取合法的RememberMe。

    🍼 使用RememberMe cookie作为Padding Oracle Attack的前缀。

    🍼 加密 ysoserial 的序列化 payload,以通过Padding Oracle Attack制作恶意RememberMe。

    🍼 重放恶意RememberMe cookie,以执行反序列化攻击。

     

    🍨 Shiro认证绕过漏洞(CVE-2020-1957

    🍦 1、漏洞原理

        在Apache Shiro 1.5.2以前的版本中,在使用Spring动态控制器时,攻击者通过构造`..;`这样的跳转,可以绕过Shiro中对目录的权限限制。

    🍦 2、影响版本

    Apache Shiro <= 1.5.2

    🍦 3、漏洞验证

        直接请求管理页面/admin/,无法访问,将会被重定向到登录页面;构造恶意请求/xxx/..;/admin/,即可绕过权限校验,访问到管理页面。

     

    af2f269ff0ce4089869723e752474052.png

    12a19040861a44d0a6317772543e28d7.png 

     

     

    🍨 Shiro 身份验证绕过 CVE-2020-13933

    🍦 1、漏洞原理

        Apache Shiro身份验证绕过漏洞CVE-2020-11989的修复补丁存在缺陷,在1.5.3及其之前的版本,由于shiro在处理url时与spring仍然存在差异,依然存在身份校验绕过漏洞由于处理身份验证请求时出错,远程攻击者可以发送特制的HTTP请求,绕过身份验证过程并获得对应用程序的未授权访问。

    🍦 2、影响版本

    Apache Shiro < 1.6.0

    🍦 3、漏洞验证

    访问后台时,通过路径/admin/或者/login/均无法进入后台,返回404或者提升需要登录,通过构造特殊的payload即可绕过验证,登录后台

    payload:http://ip/admin/%3bxxx(不要xxx或者替换为其他字母也可以)

    ae4f38bd2b8446b99e9989cd3f37f463.png

    f7adcf7a53d24bd8b56c11a8a2433507.png 

    a3bb8279ee51494ba14a9034a94f7169.png 

     

     

     

     

     

  • 相关阅读:
    骨传导耳机哪个牌子好?骨传导好用的品牌推荐
    Gin,Gorm实现Web计算器
    数据密集型应用中的数据模型与数据语言
    免费使用Salesforce Data Cloud!详细操作步骤来啦
    基于Springboot实现口腔牙诊所管理平台项目【项目源码+论文说明】计算机毕业设计
    【软件安装】docker 安装 elasticsearch 和 kibana
    回归预测 | MATLAB实现RBF径向基神经网络多输入单输出回归预测
    云原生 PostgreSQL - CrunchyData PGO 教程:创建、连接、删除 Postgres 集群
    【python学习】枚举算法案例分析
    基于velero及minio实现etcd数据备份与恢复
  • 原文地址:https://blog.csdn.net/weixin_53972936/article/details/127642462