Shiro反序列化的检测与利用

 

作者:掌控安全-核心成员Xiaoc

一、 前言

Shiro 是 Apache 旗下的一个用于权限管理的开源框架,提供开箱即用的身份验证、授权、密码套件和会话管理等功能。

该框架在 2016 年报出了一个著名的漏洞——Shiro-550,即 RememberMe 反序列化漏洞。

4年过去了,该漏洞不但没有沉没在漏洞的洪流中,反而凭借其天然过 WAF 的特性从去年开始逐渐升温,恐将在今年的 HW 演练中成为后起之秀。

 

二、 原理

事实上,关于shiro的原因网络之上已经有很多的分析。而且估计大多数人对枯燥的代码分析没多大兴趣。

我这里就不啰嗦了。直接上如何检测以及攻击过程。对原理感兴趣的小伙伴可以自行百度或者谷歌吧。

 

三、 如何发现

3.1 第一种情况

多半是发生在登录处,返回包中包含rememberMe=deleteMe这个字段。

上图:

看到这个字眼,基本就可以试试。

实战之中也是多试试,即使漏洞不存在也不会亏。

3.2第二种情况

另一种情况就是,直接发送原数据包,返回的数据包中不存在关键字

可以通过在发送数据包的cookie中增加字段:

rememberMe=deleteMe

然后查看返回数据包中是否存在关键字。

这就要求很多时候需要手动在发送数据包之中增加字段,无疑相对比较麻烦,

有没有什么自动检测的工具吗?

有,当然有!

 

四、 自动检测Shiro反序列化之burp插件

先看效果:

这是刚刚我在测试的时候,插件自动发现的。

这期间,我们什么都不用操作,

仅仅需要过一段时间自己看看没有漏洞网站即可。

安装过程:

4.1 将jar包放到一个文件内,

建议在burp根目录文件夹下建立一个插件的文件夹。

路径最好不要出现中文。

4.2 点击—插件—添加—会弹出窗口。

4.3. 选定插件,下一步,关闭

4.4 测试插件效果

我们去访问一下刚刚那个漏洞网站,随便输入账户密码试试。

如果输入账户密码登录几次,等待1分钟左右,这没有出现的话。

就重启burp在试试。一般是不需要的。

 

五、 利用漏洞进行攻击

通过以上内容,我们已经找到burp,接下来就是进行攻击利用。

直接上工具:

没有工具的可以去这篇文章下下载:

https://bbs.zkaq.cn/Index/s/yBAwHerO

5.1. 测试存在

四种方式都可以试试,

推荐第四个。

这个资源可以放一个目标网站的一些图片链接等,也可以不放。

接着下一步。

已经发现key。在等待几分钟。

上边的框从灰色变白色,即可以输入命令的时候,代表攻击成功。

5.2. 执行命令

5.3. 反弹shell

先在VPS上开启监听

因为我得VPS(服务器)是linux的,就选择这个。

执行,

返回VPS查看。

5.4. 写入webshell

同样的原理可以写webshell,有时候自带的木马写不成功。

可以换成自己的马木,如冰蝎自带的。

写马。

访问试试,貌似写成功了。

空白页面一般是写入成功,如果未写入成功。访问会爆404等待文件不存在。

但是出现一个蛋疼的问题。

Webshell管理工具连接不上。

冰蝎2、冰蝎3、蚁剑都连接不上。

 

六、进阶之写内存马

到此就失败了么?

不不不,上内存马。

6.1. 新工具

老规矩,先看看他的样子。

6.2. 使用

6.3. 写马

不能忘了,之所以到这,是因为写木马无法连接的原因。

开始写马。

出错,换个目录试试。

查看,应该是写入成功。

注意的是,这是冰蝎2的木马。

 

七、 其他

第一种工具,直接写马不成功。

因为可以执行命令了。可以通过命令echo写马。

工具是死的,人是活的。

学院有自己的靶场,复现的话可以使用学院的,也可以自己vulhub一键搭建。

这个文章也是早就想写了,一直拖到现在也算是完成了一个小心思。

写的比较仓促,有些不足,欢迎大家多多指教补充。

部分工具可以在公众号:掌控安全EDU后台回复“工具”,获取链接直接下载即可。

(完)