Java反序列化之commons-beanutils分析
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,TemplatesImpl类是一个可序列化的类,其中有一个属性_bytecodes,里面保存的数据在defineTransletClasses函数里将会被加载成类:存在着这样一条调用链条:简单来说,只
千家信息网最后更新 2025年12月01日Java反序列化之commons-beanutils分析
TemplatesImpl类是一个可序列化的类,其中有一个属性_bytecodes,里面保存的数据在defineTransletClasses函数里将会被加载成类:
存在着这样一条调用链条:
简单来说,只要是能调用到getOutputProperties函数,就能触发包含在_bytecodes里的类构造函数被执行(这个类是由***者来实现的)。
Payload第一部分:
创建了一个BeanComparator对象,将其作为参数用来创建一个PriorityQueue,向queue对象中添加两个大整数对象(占位用)。
接着通过反射机制设置了comparator后面将会对比对象的属性为outputProperties。
Payload第二部分:
通过反射机制修改queue中数组保存的对比对象为内置了***代码的templates。
返回queue,将其生成序列化数据。
漏洞触发逻辑:
反序列化的queue的时候,其对应的PriorityQueue类readObject函数会依次读取序列化数据中的元素,放入到队列中。然后,调用heapify函数进行排序操作。
最终,会调用到siftDownUsingComparator函数,其中会调用comparator的compare方法:
compare方法中将会调用被对比对象的对应属性get方法,这里的o1,o2就是之前传入的templates对象,this.property就是之前通过反射机制修改的outputProperties。因此,最终就调用了TemplatesImpl的getOutputProperties函数,触发POC代码执行:
函数
对象
序列
属性
数据
方法
机制
反射
代码
就是
两个
中将
元素
参数
数组
整数
时候
是由
漏洞
第一部
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
福建通用软件开发价格实惠
qq邮箱pop服务器怎么填写
根服务器有何影响
武汉市力森软件开发有限公司
高中微机网络技术应用知识点
拥有一台服务器都可以干什么
南京协同管理软件开发
两千字软件开发总结
存储管理服务器不能为空
软件开发有哪些高端岗位
学软件开发100天
幕智网络技术有限公司
总经办关于网络安全的描述
联合国商品数据库使用教程
天津特色软件开发价钱
伊甸园的骄傲分服务器吗
脏小豆骗赞服务器视频
联通4g网络技术买的吗
steam地平线4无法与服务器连接
网络安全提供者
会计软件开发难吗
上海精益管理软件开发
学校组织网络安全演讲活动
北京大规模软件开发配件
招贤纳士中国联通数据库团队
天津特色软件开发价钱
易人网络技术
gitlab服务器迁移
俄乌冲突中网络安全
数据库设为空字符串而不是0