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

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

平台 :玄机(xj.edisec.net
题目 ID :424
难度 :简单
类型 :渗透
积分 :300 分
Flagflag{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 输入进行严格的类型和内容验证

相关推荐
yyyyy_abc1 天前
ceph学习笔记
笔记·ceph·学习
晓梦林1 天前
ximai靶场学习笔记
android·笔记·学习
米高梅狮子1 天前
03.网络类服务实践
linux·运维·服务器·网络·kubernetes·centos·openstack
IT19951 天前
Dify笔记-创建自定义工具连接到自建的OpenAPI Schema服务
笔记
June`1 天前
网络编程时内核究竟做了什么???
linux·服务器·网络
维构lbs智能定位1 天前
厂区人员定位管理系统|以智能定位,守护化工厂区每一寸安全(二)
安全·厂区人员管理定位系统
原来是猿1 天前
腾讯云服务器端口开放完全指南
服务器·网络·腾讯云
一口吃俩胖子1 天前
【脉宽调制DCDC功率变换学习笔记021】时域性能准则
笔记·学习
你的保护色1 天前
【无标题】
java·服务器·网络
楼兰公子1 天前
RK3588 + Linux7.0.3 网络工程调试错误速查手册
linux·网络·3588