shiro漏洞及复现RCE利用

TL;DR

  • Shiro RememberMe 相关漏洞的关键在于反序列化数据处理不当,可能导致远程代码执行。
  • 文章基于 Vulhub 环境记录了登录数据包、RememberMe 字段和漏洞复现过程。
  • 防护应升级 Shiro、轮换或移除默认密钥,并避免在未受信环境中反序列化客户端可控数据。

shiro及漏洞复现

首先了解漏洞原理及利用方式,漏洞CVE为

CVE-2016-4437

其次,在shiro内的序列化处理中,将rememberMe字段的数据未做处理校验,开始直接存储和反序列化操作。导致RCE及任意代码执行。

准备:使用vulhub_app的shiro的docker环境,如下:

环境

登录时的数据包及逻辑如下

登录数据包

对于此字段rememberMe的反序列化利用链路如下:

ysoserial将命令进行序列化,然后将此命令所在的机器使用JRMP来搭建远程加载使用类。将远程利用类执行命令进行AES及Base64加密的方式将命令加载生成Cookie,替换原有的rememberMe的cookie进行RCE。

复现过程:

复现

复现2

复现3

Tips:from Crypto.Cipher import AES导入报错时:pip install crypto pycrypto pycryptodome

仍报错时可进入到pip的site-package内将crypto重命名为Crypto即可。