当前位置:   article > 正文

亲手带你 Debug Fastjson 的安全漏洞_com.alibaba.fastjson.jsonobject.parseobject()方法是线程

com.alibaba.fastjson.jsonobject.parseobject()方法是线程安全的嘛?

简介

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简单使用介绍

工欲善其事,必先利其器,要想研究这个漏洞,就要先要了解这个fastjson是干什么的。自己研究了一下这个类库。User.java code如下:

testFastJson.java code如下:

  1. package fastjsonVul.fastjsonTest;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.parser.Feature;
  6. import com.alibaba.fastjson.serializer.SerializerFeature;
  7. import fastjsonVul.fastjsonTest.User;
  8. public class testFastJson {
  9.         
  10.     public static void main(String[] args){
  11.         Map<StringObject> map = new HashMap<StringObject>();
  12.         map.put("key1","One");
  13.         map.put("key2""Two");
  14.         String mapJson = JSON.toJSONString(map);    
  15.         System.out.println(mapJson);
  16.         
  17.         User user1 = new User();
  18.         user1.setUsername("果汁简历");
  19.         user1.setSex("male");    
  20.         System.out.println("obj name:"+user1.getClass().getName());
  21.         
  22.         //序列化
  23.         String serializedStr = JSON.toJSONString(user1);
  24.         System.out.println("serializedStr="+serializedStr);
  25.         
  26.         String serializedStr1 = JSON.toJSONString(user1,SerializerFeature.WriteClassName);
  27.         System.out.println("serializedStr1="+serializedStr1);
  28.         
  29.         //通过parse方法进行反序列化
  30.         User user2 = (User)JSON.parse(seriali
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/953924
推荐阅读
相关标签
  

闽ICP备14008679号