shiro反序列化检测工具_Shiro rememberMe反序列化攻击检测思路

1、背景

Apache Shiro是一款强大且易用的Java安全框架,使用范围非常广泛。Shiro默认使用CookieRememberMeManager,其处理cookie的流程是:rememberMe cookie值–>Base64解码–>AES解密–>反序列化。在Shiro<=1.2.4版本下,AES密钥是硬编码的,导致攻击者可以构造加密的反序列化数据执行任意命令。

下载Shiro 1.2.4的代码,先看看CookieRememberMeManager.java文件,发现其继承AbstractRememberMeManager类。

0f7bb4c7435abdce54821272a923023e.png

跟进到AbstractRememberMeManager类,在80行发现定了私有常量DEFAULT_CIPHER _KEY_BYTES,值为Base64.decode("kPH+bIxk5D2deZiIxcaaaA=="),而这就是我们需要找的硬编码AES key。

6b1c11429345de1c409be175dbb06988.png

解密后的数据会经过AbstractRememberMeManager类的getRememberedPrincipals方法处理,并在该方法中调用了convertBytesToPrincipals方法.

c98b22b62e9e6c585bfd9898bedd751a.png

继续向上追踪,最后到DefaultSerializer类的deserialize方法调用了readObject,对解密的数据进行反序列化。

cd9721c4162ddc653e5fb69ea195589c.png

由于该漏洞攻击特征被加密,和正常数据看起来相似,在护网等场景下被攻击者大量使用,并且较难在不影响正常业务情况下直接做拦截。特别是对云上安全产品,客户的服务器、应用、业务种类繁多,直接封禁rememberMe cookie难以实现,因此需要先行对数据进行处理再做决定。

2、检测思路

我们需要模拟Shiro对Cookie处理的过程,对加密数据进行处理后再进行,处理过程的流程图如下:

22eee056aefd209d0ff6291fa80fe9ca.png

提取含有rememberMe cookie的值,对其做base64解码,再利用AES key对数据进行解密,由于该漏洞是AES key硬编码导致的,我们收集了市面上攻击者常用的20个AES key,覆盖绝大部分Shiro反序列化攻击行为。

498cdedc31150e9991e0c30ef17ea2c4.png

对数据解密后,先判断解密后数据是否以” aced0005”开头,即拥有Java序列化数据的特征。但是到了这步,仍然没办法确认是否是攻击,正常用户的rememberMe值解密后也是序列化的数据。但这里我们很清楚,此处存在漏洞是因此对数据做了反序列化操作即存在反序列化入口,而实际触发漏洞还需要有一个完整的利用链条。因此,我们提取了常见工具的20余条利用链的特征,再对解密数据进行判断,从而能正确的处理攻击数据。

3、检测效果

3.1攻击详情

3630a29dc8effd164dd50879f70eadf3.png

3.2 最近一周攻击趋势

f26840b906754b3c8c2a2da9e67a571f.png

4、一体化解决方案

百度安全智能一体化解决方案中已支持上述漏洞检测,并且开放了智能化编排的入口,用户只需要编写简单的脚本,就能够对特定数据进行处理,进行触发告警、拦截等措施。智能一体化解决方案如下:

bed9048ff4e4c90e3fa4586637be9373.png

对于此类无明显攻击特征的行为,WAF等设备通常无法直接拦截,智能网关先将旁路流量给到智能分析中心,通过用户添加的智能编排脚本处理,再将结果反馈到智能网关,对相应的攻击进行拦截,能够准确、有效地保护用户的资产。

另外,智能分析中心还集成了智能API识别,能够有效地对API进行分类识别,帮助用户梳理API资产;同时还集成了AI白模型等能力,当用户对资产进行一段时间的学习后,能够有效地防御未知攻击、0day攻击等。

5afc063ed5bd81edbee60e9b804bba64.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值