Java反序列化之commons-beanutils分析
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,TemplatesImpl类是一个可序列化的类,其中有一个属性_bytecodes,里面保存的数据在defineTransletClasses函数里将会被加载成类:存在着这样一条调用链条:简单来说,只
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
华服互联网科技怎么样
中国互联网科技工作委员会毛军
科技互联网产品
互联网科技巨头监管
今日互联网科技
上海互联网科技有限公司
浩特互联网科技
丰台科技园 互联网
多迪互联网科技有限公司
太原新华互联网科技学校怎么样
互联网教育科技公司vipkid
北京华百购互联网科技有限公司
互联网高科技行业有哪些企业
中国新注册互联网科技
互联网科技新闻
陕西九四连强互联网科技有限公司
科技和互联网行业的特点
互联网科技品牌
互联网科技大会大佬
互联网高科技绘画
互联网科技股
互联网金融公司科技
郑州华宇互联网科技
互联网前沿科技
卓越科技互联网 招聘
创业天下互联网科技有限公司
辽宁互联网新科技
迪庆互联网科技招生
互联网科技创新创业项目
株洲百竞科技的互联网营销顾问