【漏洞分析】利用Padding Oracle攻击造成的Shiro RCE漏洞
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
近日,白帽汇安全研究院发现Apache官网发布了漏洞通告:RememberMe Padding Oracle Vulnerability,是借助Padding Oracle进行的反序列化攻击。
概况
目前FOFA系统最新数据(一年内数据)显示全球范围内共有3516个使用shiro框架的网站对外开放。中国大陆地区使用数量最多,共有3041台,中国香港特别行政区第二,共有151台,美国第三,共有129台,西班牙第四,共有32台。
全球范围内使用shiro框架的网站分布情况(仅为分布情况,非漏洞影响情况)
中国大陆地区北京市使用用数量最多,共有656台;浙江省第二,共有286台,广东省第三,共有93台,上海市第四,共有83台,江苏省第五,共有65台。
中国大陆范围内使用shiro框架网站分布情况(仅为分布情况,非漏洞影响情况)
危害等级
严重
漏洞原理
回顾SHIRO-550漏洞
shiro在默认情况下使用CookieRememberMeManager对用户身份进行序列化、加密和编码,当用户登录时使用对称方式进行验证:
查看RememberMe cookie的值
base64解码
使用AES解密
使用Java序列化(objectInputStream)反序列化
漏洞产生:
AES的密钥是硬编码的,只要能访问源代码的就能知道默认加密密钥,导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
官方修复:
删除代码里的默认密钥
默认配置里注释了默认密钥
如果不配置密钥,每次会重新随机一个密钥
官方修复中没有对反序列化做安全限制。
SHIRO-721漏洞
RememberMe使用AES-128-CBC模式加密,容易受到Padding Oracle攻击,AES的初始化向量iv就是rememberMe的base64解码后的前16个字节,攻击者只要使用有效的RememberMe cookie作为Padding Oracle Attack 的前缀,然后就可以构造RememberMe进行反序列化攻击,攻击者无需知道RememberMe加密的密钥。
AES的初始化向量iv
复现方法
1.登录网站,获取cookie中的RememberMe
2.使用RememberMe cookie作为Padding Oracle Attack的前缀
3.加密ysoserial的序列化有效负载,结合Padding Oracle Attack制作精心制作的RememberMe
4.请求带有新的RememberMe cookie的网站,以执行反序列化攻击
漏洞影响
目前漏洞影响版本号包括:
1.2.5
1.2.6
1.3.0
1.3.1
1.3.2
1.4.0-RC2
1.4.0
1.4.1
参考
[1] https://www.cnblogs.com/loong-hon/p/10619616.html
[2] https://blog.csdn.net/three_feng/article/details/52189559
[3] https://issues.apache.org/jira/browse/SHIRO-721
[4] https://issues.apache.org/jira/browse/SHIRO-550
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。
最新评论