java反序列化CC1 LazyMap链
💡
原文中文,约5600字,阅读约需14分钟。
📝
内容提要
本文介绍了利用Java反序列化漏洞进行攻击的方法,通过构造恶意的Transformer链,利用LazyMap和AnnotationInvocationHandler等类的漏洞,成功执行了危险的Runtime.exec()方法。攻击者通过动态代理调用LazyMap的get方法,触发了Transformer链的执行。
🎯
关键要点
- 介绍了利用Java反序列化漏洞进行攻击的方法。
- 通过构造恶意的Transformer链,利用LazyMap和AnnotationInvocationHandler等类的漏洞。
- 攻击者可以执行危险的Runtime.exec()方法。
- LazyMap的get()方法调用了this.factory.transform(),可以传入构造好的ChainedTransformer对象。
- AnnotationInvocationHandler.invoke()中调用this.memberValues.get()方法,this.memberValues可控。
- 通过动态代理调用invoke方法,结合危险方法执行链构造payload。
- 在AnnotationInvocationHandler.readObject中,代理对象执行entrySet()方法,触发调用处理程序。
- LazyMap.get()中执行transform()方法,完成危险方法调用。
- 通过动态代理调用LazyMap的get方法在JDK8u71后的版本已不适用,后续将介绍通过HashMap触发get方法。
➡️