赞
踩
Java处理JSON数据有三个比较流行的类库,gson(google维护)、jackson、以及今天的主角fastjson,fastjson是阿里巴巴一个开源的json相关的java library,地址在这里,
https://github.com/alibaba/fastjson,
Fastjson可以将java的对象转换成json的形式,也可以用来将json转换成java对象,效率较高,被广泛的用在web服务以及android上,它的JSONString()方法可以将java的对象转换成json格式,同样通过parseObject方法可以将json数据转换成java的对象。
大概在4月18号的时候,fastjson进行了一次安全更新,通告在这里
https://github.com/alibaba/fastjson/wiki/security_update_20170315,
当时对这也不熟悉,断断续续看了几天也没什么收获(主要是因为太菜了TAT)。最近有人出了poc以及分析的文章就跟进了一下,漏洞还是挺有意思。
工欲善其事,必先利其器,要想研究这个漏洞,就要先要了解这个fastjson是干什么的。自己研究了一下这个类库。User.java code如下:
testFastJson.java code如下:
- package fastjsonVul.fastjsonTest;
- import java.util.HashMap;
- import java.util.Map;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.parser.Feature;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- import fastjsonVul.fastjsonTest.User;
- public class testFastJson {
-
- public static void main(String[] args){
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("key1","One");
- map.put("key2", "Two");
- String mapJson = JSON.toJSONString(map);
- System.out.println(mapJson);
-
- User user1 = new User();
- user1.setUsername("果汁简历");
- user1.setSex("male");
- System.out.println("obj name:"+user1.getClass().getName());
-
- //序列化
- String serializedStr = JSON.toJSONString(user1);
- System.out.println("serializedStr="+serializedStr);
-
- String serializedStr1 = JSON.toJSONString(user1,SerializerFeature.WriteClassName);
- System.out.println("serializedStr1="+serializedStr1);
-
- //通过parse方法进行反序列化
- User user2 = (User)JSON.parse(seriali
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。