尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
WEB安全--Java安全--Fastjson反序列化原理初探
一、Fastjson的基本功能1.1、将json字符串解析为json对象这里的fastjson包版本为1.2.24通过pom的方式即可导入dependencies dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version1.2.24/version /dependency /dependencies可以看到在运行主类后发现字符串被处理为json对象打印出来了当然也可以提取出json对象中的具体值1.2、将json字符串解析为JavaBeanJavaBean一种格式拥有构造方法和get、set方法的类这里在方法中添加了打印字符串方便观察方法被调用的情况运行主类可以发现输出结果明显和普通json对象不同由于我们指定了解析的对象是Person类所以调用了Person类中的constructor、setName和setAge方法这个是毫无疑问的但是我们还能看到调用了getAge方法却没有调用另一个getName方法这时因为在输出时指定了person对象的getAge方法的缘故如果不指定方法就是下面的结果1.3、type指定解析的对象这里我们对字符串的解析方式和第一种1.1是如出一辙的虽然结果貌似没有区别但是通过打印的方法名我们可以知道这个字符串还是被当做JavaBean解析了这是为什么呢如果细看可以发现字符串中多出了下面的信息通过这种方式使程序按照对Person对象的形式去处理json字符串type:org.example.Person也就是说当我们传入的json字符串中包含type:xx.xx.xx的信息如果路径存在就会控制程序按某个类去执行我们的json字符串。利用type可以指定让fastjson去接收我们想要的类而最关键的是这个type可以被我们抓包改掉他这里是无条件信任了前端传入的数据二、Fastjson反序列化漏洞2.1、漏洞原理何为fastjson反序列化呢如果联想到将json字符串解析为JavaBean的过程我们不难知道在json字符串被解析为java对象时会调用指定类中的set方法这个过程就是反序列化与之对应的还有序列化也就是将java对象转换为json字符串这一过程Json字符串 ————反序列化————Java对象Java对象 ————序列化———— Json字符串其实Fastjson反序列化漏洞的本质也就是java反序列化漏洞因为在将Json字符串反序列化为Java对象这个过程中会执行type指定类中的construct和set方法如果这些方法中存在危险操作的话就会产生严重危害命令执行。2.2、测试为了模拟该漏洞在下面创建了一个类Test其中包含着setCmd的命令执行方法通过AutoType指定该类并且解析的字符串中的内容是要执行的命令运行程序-命令执行。
RELATED

相关推荐

物联网设备电源管理:NBM5100A与MKV42F128VLH16协同设计

物联网设备电源管理:NBM5100A与MKV42F128VLH16协同设计

1. NBM5100A与MKV42F128VLH16的协同设计背景在物联网终端设备设计中,工程师们长期面临一个经典矛盾:传感器节点需要周期性唤醒并发送数据,这种突发性工作模式要求电源系统具备瞬时大电流输出能力,而常见的锂亚硫酰氯(L…

📅 2026/9/14 2:53:50
行空板OCR实战:基于Tesseract的图像文字识别与信息提取

行空板OCR实战:基于Tesseract的图像文字识别与信息提取

1. 项目概述:当行空板遇上传统OCR 最近在捣鼓一个挺有意思的小项目:用行空板跑pytesseract来做传统的人物识别。你可能会问,现在不都流行深度学习吗,YOLO、SSD、各种Transformer模型满天飞,为啥还要折腾这个“传统”方…

📅 2026/8/24 14:53:26
基于Arduino与传感器的坐姿智能提醒器DIY全攻略

基于Arduino与传感器的坐姿智能提醒器DIY全攻略

1. 从“坐不住”到“坐得对”:一个硬件创客的自我救赎我猜,你点开这篇文章,大概率和我几年前的状态一样:每天在电脑前一坐就是七八个小时,腰酸背痛是家常便饭,颈椎时不时发出抗议,眼睛干涩&…

📅 2026/8/24 14:53:26
MORE NEWS

更多资讯

📰

长沙跨境电商静态页开发:HTML5语义化+CSS响应式+本地JS交互

简介:本资源是一套基于HTML、CSS与JavaScript实现的长沙跨境电商平台Demo源码,面向前端初学者及Web开发实践者,旨在通过真实业务场景帮助掌握静态网页构建、响应式布局与基础交互逻辑。压缩包共66个文件,含32个JPG、19个PNG、7个J…

📰

Python+OpenCV图像处理实战:从基础算法到应用案例

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Vue3+TS舆情监测系统模板:实时词云、权限路由与数据清洗实战

简介:本资源是一款面向前端开发者与舆情系统学习者的VueTypeScript实战模板,聚焦网络舆情实时监测场景,助力企业品牌监控、政务舆情分析等实际业务落地。压缩包共42个文件,总大小389KB,涵盖18个Vue组件(如H…

📰

车载CAN-LIN网关OTA升级实战:协议转换与刷写可靠性设计

1. 项目概述:为什么一个车载网关的刷写升级方案值得拆解到毫米级CAN-LIN网关不是一块简单的“翻译器”,它是整车电子电气架构里真正意义上的神经中枢——一边连着高速、高可靠性的CAN总线(比如发动机控制单元ECU、ABS模块、仪表盘&#xff09…

📰

代码模型企业级交付选型指南:火山引擎为何成首选底座

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

PyTorch水果分类实战:从CNN手写到Grad-CAM可视化

简介:本资源是一套基于PyTorch实现的水果图像分类深度学习项目,专为计算机及相关专业本科生毕业设计、课程设计与期末大作业打造,兼顾理论完整性与工程可运行性。项目采用经典CNN架构,包含数据加载、模型训练、验证评估与预测部署…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬