标签:控制 weblogic 代理 ast web服务 等等 jar包 NPU sha
序列化是把对象转换为字节流,以便于保存在内存、文件、数据库中。反序列化则是相反的过程,将字节流还原为对象,Java中的ObjectOutputStream类的writeObject()方法用于序列化,类ObjectInputStream类的readObject()方法用于反序列化,如果Java应用对不可信的数据进行反序列化处理,那么攻击者可以构造恶意输入,使得反序列化后产生非预期的对象,非预期的对象在产生的过程中,有可能带来任意代码执行。
出现场合:
Java的序列化和反序列化让Java的对象脱离了Java的运行环境,可以有效的实现多平台之间的通信、对象持久化存储,所以经常出现在以下场合
漏洞利用:
漏洞防范:
漏洞检测:由于反序列化操作一般在导入模版文件、网络通信、数据传输、日志格式化存储、对象数据落磁盘或DB存储等业务场景,所以在代码审计时可重点关注一些反序列化操作函数并判断输入是否可控,比如:
攻击检测:通过查看反序列化后的数据,可以看到反序列化数据开头包含两字节的魔术数字,则两个字节始终为十六进制的0xACED,接下来是两字节的版本号,考虑到zip、Base64各种编码,在攻击检测时,可针对该特征进行匹配请求POST中是否包含反序列化数据,以此判断是否为反序列化漏洞攻击
除了常见的Web服务反序列化,安卓、桌面应用、中间件、工控组件等等的反序列化,以及XML、JSON、RMI等细致化的分类
标签:控制 weblogic 代理 ast web服务 等等 jar包 NPU sha
原文地址:https://www.cnblogs.com/Amev/p/9108646.html