调用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的利用了