Java反序列化之commons-beanutils分析
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,TemplatesImpl类是一个可序列化的类,其中有一个属性_bytecodes,里面保存的数据在defineTransletClasses函数里将会被加载成类:存在着这样一条调用链条:简单来说,只
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
数据库检索核心期刊种树
达梦数据库定时执行存储过程
查数据库密码
维修记录怎样做成数据库
迅雷网盘能当服务器吗
怎么解读服务器日志
台州全速网络技术有限公司
虹口区直销软件开发
手机怎么复制文件到服务器
网络安全校园网场景设计
网络安全法 标题
全景服务器
通信网络技术与综合监控系统
服务器正常运行显示什么颜色灯光
中医药化学成分数据库
多个数据库检索源代码
淮安品质联想服务器厂家直供
正在同步服务器数据什么意思
明日之后苹果夏尔镇服务器
中国软件开发行业前景
网络安全学哪些课程
大话西游2最近新开服务器
新颖的软件开发题目
特斯拉中国数据库可以用了吗
域名和服务器备案的区别
魔兽世界 奥杜尔服务器
软件开发大讲堂视频
数据库安全性的措施
至强是服务器系列cpu
空间数据库包含哪几方面内容