/ShiroHacker

只属于你一人的Shiro反序列化漏洞(针对Spring的一键改Shiro Key工具)

Primary LanguageJavaApache License 2.0Apache-2.0

ShiroHacker

工具仅用于安全研究以及内部自查,禁止使用工具发起非法攻击,造成的后果使用者负责

简介

什么是ShiroHacker

白帽子在挖掘漏洞的时候,经常会遇到抢洞的情况

是否能够创造一个只属于你一人的Shiro反序列化漏洞:只要你挖到,从此以后再不会有其他人能够挖到这个洞

(该工具只针对于SpringBoot/SpringMVC配合Shiro的情况,这也是最广泛的情况)

使用

可以使用配套测试环境:https://github.com/EmYiQing/ShiroEnv

或者直接下载打包好的测试环境:https://github.com/EmYiQing/ShiroEnv/releases/download/1.0/shiro.jar

(启动后访问:http://127.0.0.1:8080)

命令:java -jar ShiroHacker.jar -u [TARGET_URL] -k [YOUR_NEW_KEY]

注意

  1. 请提供16位长度的Key否则会影响到服务端正常的业务逻辑(不提供会使用默认的)
  2. Payload仅可用于较新版本的SpringBoot中(例如2.6.0)
  3. 使用该工具有可能会导致服务端业务逻辑出问题,真实环境慎用

原理

和普通Shiro工具一样,本工具会首先扫描key并输出

然后会用Shiro原生反序列化链CB1构造Payload打过去

这个Payload的逻辑是反射修改服务端的Key,需要修改三处地方

  • AbstractRememberMeManager.DEFAULT_CIPHER_KEY_BYTES
  • CookieRememberMeManager.encryptionCipherKey
  • CookieRememberMeManager.decryptionCipherKey

只修改第一处不会生效,需要获取SpringContext拿到CookieRememberMeManagerBean修改后两处

感谢

感谢天下大木头师傅提供帮助:https://github.com/KpLi0rn

提出该技术的文章:https://xz.aliyun.com/t/9450

免责申明

未经授权许可使用ShiroHacker攻击目标是非法的

本程序应仅用于授权的安全测试与研究目的