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方法。
➡️

继续阅读