玄机网络安全靶场:Jackson-databind 反序列化漏洞(CVE-2017-7525)

解题报告:Jackson-databind 反序列化漏洞(CVE-2017-7525)

平台 :玄机(xj.edisec.net)
题目 ID :424
难度 :简单
类型 :渗透
积分 :300 分
Flag :flag{78792a67-6638-4410-a6d2-668734de7a8b}
完成状态:✅ 已完成


一、漏洞背景

CVE-2017-7525 是 Jackson-databind 库中的一个高危反序列化漏洞,CVSS 评分 9.8(严重)。该漏洞影响 Jackson-databind 2.x 系列在 2.6.7.1、2.7.9.1、2.8.9 之前的版本。

当应用程序开启了 ObjectMapper.enableDefaultTyping() 功能(即多态反序列化),攻击者可以在 JSON 数据中通过 @class 或类型标注字段指定任意 Java 类进行实例化,借助特定的 Gadget 链(如 TemplatesImpl)实现任意代码执行。

漏洞触发条件:

条件 说明
开启 DefaultTyping objectMapper.enableDefaultTyping() 或 NON_FINAL 模式
目标类有无参构造器 Gadget 类需要可被实例化
字段类型为接口/抽象类/Object 允许多态类型注入

二、靶机信息

项目 值
靶机 IP 52.83.46.51
服务端口 8081
应用框架 Spring Boot(Whitelabel Error Page 特征)
漏洞响应特征 错误响应包含 ["java.util.LinkedHashMap", {...}](DefaultTyping 开启标志)

三、漏洞利用过程

3.1 服务探测

访问靶机 http://52.83.46.51:8081/ 返回 Spring Boot 的 Whitelabel Error Page(HTTP 404),Content-Type 为 application/json;charset=UTF-8。

向任意路径发送 POST 请求时,错误响应体格式为:

json 复制代码
["java.util.LinkedHashMap", {
  "timestamp": ["java.util.Date", 1776588242414],
  "status": 404,
  "error": "Not Found",
  ...
}]

这是 Jackson enableDefaultTyping() 开启后序列化响应时的典型特征,确认漏洞存在。

3.2 利用方式

CVE-2017-7525 利用 com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl 作为 Gadget,通过在 JSON 中注入恶意字节码实现 RCE:

json 复制代码
[
  "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",
  {
    "_bytecodes": ["<base64编码的恶意字节码>"],
    "_name": "a.b",
    "_tfactory": {},
    "_outputProperties": {}
  }
]

当 Jackson 反序列化上述 JSON 时,会实例化 TemplatesImpl 对象,触发 _outputProperties 的 getter 方法,进而加载并执行 _bytecodes 中的恶意字节码,实现任意命令执行。

3.3 命令执行

通过构造读取 /flag 文件的恶意字节码,成功获取 Flag:

复制代码
flag{78792a67-6638-4410-a6d2-668734de7a8b}

四、漏洞影响

影响范围 说明
受影响版本 Jackson-databind < 2.6.7.1 / 2.7.9.1 / 2.8.9
攻击向量 网络(无需认证)
危害等级 严重(RCE,可完全控制服务器)

五、修复建议

  1. 升级 Jackson-databind 至 2.6.7.2+、2.7.9.2+、2.8.10+ 或 2.9.x 版本
  2. 禁用 DefaultTyping :避免使用 objectMapper.enableDefaultTyping(),改用 @JsonTypeInfo 注解精确控制类型信息
  3. 使用黑名单过滤 :在无法升级时,配置 PolymorphicTypeValidator 限制可反序列化的类
  4. 输入验证:对 JSON 输入进行严格的类型和内容验证

相关推荐
EasyDSS19 小时前
连锁扩张管控难?一套视频会议/直播/点播/集群对讲EasyDSS音视频云平台打通门店全流程数字化
网络·音视频·easydss
xiaohaiAIgeo19 小时前
【2026年】通风柜自动门安全吗?联锁逻辑与防夹设计
人工智能·安全·科普知识
曦夜日长19 小时前
Git系统篇,Git本地使用(一):从“究极进化版“到三个区域的底层原理
大数据·linux·git·elasticsearch
·云扬·19 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
shimly12345620 小时前
给断网无 sudo ubuntu22.04 机器安装 nodejs
linux
滕州市燕猫虎计算机科技工作室个体工商户20 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
比兔代理21 小时前
游戏、直播、远程办公遇到动态IP怎么办?
网络
Lzg_na21 小时前
ARP 地址解析协议详解
网络·网络协议
上海广测检测科技有限公司21 小时前
消费类智能联网设备安全分级国标征求意见要点解析:三级五维框架与跨境对标逻辑
网络·经验分享
别动我齐刘海21 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人