Shiro反序列化漏洞原理&代码分析(1)

调用readobject的链

我们知道shiro反序列化是他加密cookie的AES密钥硬编码,造成我们可以任意伪造cookie,注入恶意的类反序列化造成的RCE,那么我们就看看如何处理cookie的

首先调用getRememberedSerializedIdentity函数 跟进去看看

先是获取请求体中的cookie也就是rememberMe的值

Cookie: rememberMe=UAnfoqJJIzCdHIlB8SdeZV0O9FqdDGGjz+ic7wOJ1HA1rxHiSNF9xo8YcAEGbdhOc0lW2HbY10H53tVwGq1TGFyabd7eIt6Aa2xmALgl0iZ7Vmsuern7cQMVUpvXfCiXTZx69i29+NCbvzaqUuWD4cTMPY6rnWpI4t9mJZVuKLxoQ7qVOuT6d5dpWxpl5tZ537WW7txMS24NsSFqxpXrFqqA81U6ANlYeK+jQ1Ajy68s+IGzNVOUk6pY3N+ZCl4v3+A9EQOKHprxmqrSFBZOd8Q9RznoXhYM4AuARRDdLs8yjkaawJ5SoGkby26JjPcmvr5L0jr8C+c5bNkM4ezYEFP0eXJ2zLsiXBzUBaY/PZLKL3NSgPoO9ayfe2UH6cr+qecjlJA6ilW1Gfh+Eed/fcWu5c1jTX33Xx+heex+N56f7qqBPjxBSg1LqpjvfubNvaJ4UwBxXhP7TF8R245+odzhLjESlNdqOdmILNEG2AyDswN1gwDL51y52ajA1ijb

然后将cookie解码 成字节码 再return decoded

在调用convertBytesToPrincipals函数 跟进去看看

调用deserialize方法 翻译过来就是反序列化 所以继续跟进

再跟进 就调用了object方法了

可以看到cookie是可控的然后cookie经过了以下转换

cookie--base64--decoded--bytes--serializedIdentity--serialized--bais--bis--ois
最终 -- ois.readObject()

所以整个输入是我们可控的接下来就要寻找一个可以反序列化的对象,该对象readobject方法可以造成RCE也就是cc链2的利用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值