weblogic反序列化基本概念

在这里插入图片描述
如图,weblogic反序列化在利用过程中,主要考虑四个部分

  1. Deliver_way :payload通过什么方式传入服务器
  2. Payload:payload是什么格式,xml本身即为序列化对象,可直接反序列化。ysoserial生成的payload,为序列化文件
  3. Write object():若非序列化数据,则首先经过writeobject()进行序列化
  4. Readobject():反序列化数据

一:所谓序列化,我理解只是数据在传输过程中的一种转化格式

如222 —> xxx —> 222
222 —> xxx 的过程即为序列化,一般通过jdk中的java.io.objectoutputstream的write object()方法实现
Xxx —> 222 的过程即为反序列化,一般通过jdk中的java.io.objectinputstream的readobject()方法实现

二:readobject() 为什么会任意代码执行

根据readobject()函数中定义不同,利用不同的payload构造不同的反射链,从而实现任意代码执行。
这里以java apache commons collections 序列化rce漏洞分析为例子(payload)
Invoker transformer—> transform 拼接成Runtime.getRuntime().exec(cmd)
在这里插入图片描述
反射机制:在运行过程中,可获取任意类的任意方法,从而执行任意命令
Hashmap—> transformedmap.decorate —>set value —> checksetvalue —> value transformer.transform

在这里插入图片描述
在这里插入图片描述
sun.reflect.annotation.AnnotationInvocationHandler —》 read object —> set value

三:触发方式

xml:xml本身就是序列化对象,通过xmldecoder进行反序列化解析 xmldecode.readobject
Cve-2017-3506
Cve-2017-10271
Cve-2019-2729
Cve-2019-2725

Ysoserial 生成的序列化文件
直接传送序列化好的payload,触发相关readobject
CVE-2015-4852
CVE-2016-0638
CVE-2016-3510
CVE-2017-3248
CVE-2018-2628
CVE-2018-2893

由于weblogic采用黑名单防御反序列化漏洞的方式,所以上面很多cve都是基于补丁的绕过或者选择新的反序列化类方法。根据命令执行的调用类的不同,就出现了各种不同的payload,这也是ysoserial存在的原因,具体选用哪种类去生成payload,要根据实际环境来,采用不同payload而已,如cve-2017-3506/10271
Cve-2015-4852/2016-0638

四:参考连接

readobject()为什么会执行命令

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值