0x01. 缘故
甲方曝了一个shiro反序列化,在验证的时候就多了解了一下这个漏洞,测试时也是用了市面上流传的poc验证了一下,不过并不理想,后来实际了解后,发现原因是使用的编码不够多,故继续造轮子,由此出此篇文章,主要目的就是发个轮子(-.-! ,毕竟有点鸽~)。
0x02.简单shiro<=1.2.4文字理解
- 因为shiro对cookie里的rememberme字段进行了反序列化,所以如果知道了shiro的编码方式,然后将恶意命令用它的编码方式进行编码并放在http头的cookie里,在shiro对提交的cookie的rememberme字段进行反序列化时,也就执行了插入的命令,最终造成了命令执行
- 我说的比较简单好理解,实际代码流程很多帖子有,不是做代码分析的了解到这里就没问题,造轮子的话够了
0x03. POC
- 这个才是发这篇文章的最终原因,毕竟造了轮子不发出来没人分享多没意思,借鉴了weblogicscan的poc框架,表示谢谢
- 测试时发现市面上大部分的poc集成的编码和使用的ysoserial里的类只有1-2种,故收集了github上大部分的编码,共18种,其实还有两种不过发现无法使用便在代码中注释掉了,也集成了ysoserial里的7个类,我把这个就称为7个模块拉
- 所以这个POC配合dnslog平台验证漏洞是否存在对我来说是个神器,如果当做exp使用虽可以但较为浪费时间,不过我相信对大部分人来说,证明存在漏洞后,进一步利用就更为有动力了,会有干劲去想办法的
PS:解压密码:svenbeast
链接: https://pan.baidu.com/s/1x776TO4yiNhqSMKnRYpWRw(已失效)
提取码: dzeb
Github:https://github.com/sv3nbeast/ShiroScan,请帮忙点个star,谢谢😘