V2022全栈培训笔记(WEB攻防47-WEB攻防-通用漏洞&Java反序列化&EXP生成&数据提取&组件安全)

第47天 WEB攻防-通用漏洞&Java反序列化&EXP生成&数据提取&组件安全

知识点:

1、Java反序列化演示-原生API接☐
2、Java反序列化漏洞利用-Ysoserial使用
3、Java反序列化漏洞发现利用点-函数&数据
4、Java反序列化考点-真实&CTF赛题-审计分析
#内容点:
1、明白Java反序列化原理
2、判断Java反序列化漏洞
3、学会-Ysoserial_工具使用
4、学会-SerializationDumper
5、了解-简要Java代码审计分析

#前置知识
序列化和反序列化的概念:
序列化:把Java对象转换为字节序列的过程。
反序列化:把字节序列恢复为Java对象的过程。
对象的序列化主要有两种用途:
把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)
在网络上传送对象的字节序列。(网络传输对象)

尽管 Java 反序列化和 PHP 反序列化在处理对象的序列化和反序列化过程中都存在类似的安全问题,但它们之间还是有一些不同的地方:
序列化格式不同:Java 使用了自己的序列化机制来支持对象的序列化和反序列化,而 PHP 通常使用基于文本的序列化格式(如
serialize 和 unserialize 函数)进行序列化和反序列化。 序列化器实现方式不同:Java 序列化器实现了
Serializable 接口,并通过反射机制获取对象的属性值进行序列化。而 PHP 序列化器没有统一的接口,而是通过魔术方法(如
__sleep() 和 __wakeup())和自定义函数进行序列化和反序列化。 对象类型的检查方式不同:Java
反序列化将对反序列化的对象进行类型检查,并且只会反序列化已知类型的对象。
PHP的反序列化器则没有这样的限制,攻击者可以构造序列化数据来欺骗反序列化器。 可重写方法的触发方式不同:Java
反序列化器通过特定的方法(例如readObject())来触发可重写方法,而 PHP 反序列化器需要在序列化字符串中包含 O:classname:
格式的元信息来实现。
综上所述,虽然 Java 反序列化和 PHP 反序列化存在一些不同,但它们都必须小心处理反序列化的输入数据,以避免导致安全漏洞。

函数接口:

Java:Serializable Extemalizable接☐、fastjson、jackson、gson、
ObjectInputStream.read,ObjectobjectInputStream.readUnshared,XMLDecoder.read.
ObjectYaml.loadXStream.fromXML.ObjectMapper.readValue.JSON.parseObject
PHP:serialize()unserialize()
Python:pickle

数据出现:
1、功能特性:
反序列化操作一般应用在导入模板文件、网例络通信、数据传输、日志格式化存储、对象数
据落磁盘、或DB存储等业务场景。因此审计过程中重点关注这些功能板块。
2

你可能感兴趣的:(笔记,前端,java,web安全,课程设计,python,安全)