服务器收到cookie会进行base64解码-->AES解密-->反序列化(readObeject). 那么我们可以构造一个带有恶意命令执行的链子来序列化后-->在通过AES加密-->base64编码,附带在cookie上发送过去,这样就能rce了。 0x02 漏洞分析 首先是要得知AES的密钥是什么,在shiro1.2.4及之前的AES密钥都是采用的硬编码(意思就是说密...
反序列化漏洞:当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的对象,在此过程中执行构造的任意代码。 漏洞原理 Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码-->AES解密-->反序列化。...
深入利用Shiro反序列化漏洞 0x00:背景 shiro反序列化RCE是在实战中一个比较高频且舒适的漏洞,shiro框架在java web登录认证中广泛应用,每一次目标较多的情况下几乎都可以遇见shiro,而因其payload本身就是加密的,无攻击特征,所以几乎不会被waf检测和拦截。 0x01:shiro反序列化的原理 先来看看shiro在1.2.4版本反...
该漏洞在传输中使用了AES CBC加密和Base64编码,CookieRememberMemanager.java类中的父类AbstractRememberMeManager中有硬编码秘钥:Base64.decode("kPH+bIxk5D2deZiIxcaaaA=="),python的解密代码: # pip install pycryptoimportsysimportbase64fromCrypto.CipherimportAESdefdecode_rememberme_file(filename):withopen(file...
正常登录返回的cookie中获取到的remeberMe值Base64解码储存为二进制文件后发现存在AES加密,在CookieRememberMemanager.java的父类 AbstractRememberMeManager存在硬编码秘钥、对称加密方式泄露,且IV并没有正常启用,由于对称加密加密解密秘钥相同的特性,可伪造cookie实现RCE。(漏洞具体原理细节参考https://paper.seebug.org/sh...
Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。 影响版本: Apache Shiro <= 1.2.4
我搭建了一个Spring heapdump泄露shiro key从而RCE的漏洞环境,Github地址:https://github.com/P4r4d1se/heapdump_shiro_vuln 漏洞利用条件: Spring Shiro环境 存在heapdump文件泄露 存在可利用链 2. 漏洞原理 Shiro相关的漏洞原理和调试分析已经有很多大佬分享过了,这里不再赘述,这里主要针对这个漏洞环境进行说明:(...
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。 3.漏洞发现 1、检索RememberMe cookie 的值 2、Base 64解码 ...
1、Shiro rememberMe反序列化漏洞(Shiro-550) 1.1 漏洞原理: Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
原因分析:Apache Shiro的默认配置使用了CookieRememberMeManager,处理cookie流程包括Base64解码、AES解密以及反序列化。问题在于AES密钥硬编码,使攻击者能构造恶意数据,导致反序列化的RCE漏洞。影响版本:Apache Shiro版本<= 1.2.4 漏洞特征:在返回包的 Set-Cookie 中出现rememberMe=deleteMe字段 判断...