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安全错误
数据库的锁怎样保障安全
咖啡豆
互联网是第几次科技革命的成果
国智互联网科技
互联网品科技
为想互联网科技
天津摩尔互联网科技
亿账通互联网科技
掌上梦互联网科技
齐家互联网科技有限公司
互联网科技公司做什么
互联网科技素材视频竖屏
成都仁贤领冠互联网科技有限公司
健康食品互联网创新科技园项目
允成互联网科技有限公司融资
工业互联网山东科技大学
上海科技产业互联网平台
电子商务与互联网科技的关系
黑云互联网科技有限公司
工业互联网科技成果转化
图游互联网科技
湖南永感互联网科技有限公司
科技互联网企业
广州善班互联网科技
开启互联网科技时代小说
受益于互联网科技的高速发展
成都铂石互联网科技做什么的
成都互联网科技公司工作好不好
中科明德北京互联网科技
保山互联网科技靠谱吗
科技互联网公司两年变化