blackhat-New-Exploit-Technique-In-Java-Deserialization-Attack-笔记

java反序列化的攻击场景:

1.远程服务接收了不被信任的反序列化数据

2.classpath中存在序列化所需要的类

3.序列化的类中存在危险函数

从上面3点看出和以前看php的反序列化攻击场景从宏观上看差不多,首先是接收数据时反序列化了不被信任的序列化数据,php的当然是固定的unserialize函数,而java中通过调用对象输入流的readObject函数来进行反序列化,unserialize只需要从该入口向下找,而java则通常是先找到readObject函数再向上找对象是否可控

magic callback:

相对于php反序列化要执行的__destruct、__wakeup,java主要包括:

blackhat-New-Exploit-Technique-In-Java-Deserialization-Attack-笔记_第1张图片

 

blackhat-New-Exploit-Technique-In-Java-Deserialization-Attack-笔记_第2张图片

 比如这里就以反序列化导致文件删除为例子进行了一个说明,这个也是个cve,ysoserialize中也有该攻击链

一些常用的防御方法:

1.在反序列化的过程中验证输入流,如果反序列化所需要的类在黑名单中,则停止序列化的过程,weblogic就用的是加黑名单的方式保护应用

blackhat-New-Exploit-Technique-In-Java-Deserialization-Attack-笔记_第3张图片

2.jep290机制

即输入的反序列化数据进行过滤,官方从8u121,7u13,6u141分别支持了这个JEP,http://openjdk.java.net/jeps/290官方说明文档

3.rasp技术

4.java agent

上面讲了一些防御方法,然后就提出要找更基础的攻击向量

JDBC connection

这里要利用的主要有两点:

JDBC连接数据库的URL可控,在其中要添加连接数据库时的配置(自动反序列化)autoDeserializequeryInterceptors

第二个参数是用于触发漏洞,利用本地gadget触发

 

 

https://paper.seebug.org/454/ jep

https://xz.aliyun.com/t/1631 jep

 

你可能感兴趣的:(blackhat-New-Exploit-Technique-In-Java-Deserialization-Attack-笔记)