From 77f48f60be5df687118dbd5d6935fc3f83a5c7e0 Mon Sep 17 00:00:00 2001 From: thy_shenzhen Date: Wed, 13 May 2020 09:08:45 +0800 Subject: [PATCH 1/3] Serialization bugs --- notes/Java 基础.md | 2 +- notes/攻击技术.md | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/notes/Java 基础.md b/notes/Java 基础.md index b1335ed7..3665415d 100644 --- a/notes/Java 基础.md +++ b/notes/Java 基础.md @@ -1141,7 +1141,7 @@ System.out.println(InterfaceExample.x); 使用接口: -- 需要让不相关的类都实现一个方法,例如不相关的类都可以实现 Compareable 接口中的 compareTo() 方法; +- 需要让不相关的类都实现一个方法,例如不相关的类都可以实现 Comparable 接口中的 compareTo() 方法; - 需要使用多重继承。 使用抽象类: diff --git a/notes/攻击技术.md b/notes/攻击技术.md index 1aa5b741..54695f83 100644 --- a/notes/攻击技术.md +++ b/notes/攻击技术.md @@ -185,6 +185,17 @@ ResultSet rs = stmt.executeQuery(); 分布式拒绝服务攻击(distributed denial-of-service attack,DDoS),指攻击者使用两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“拒绝服务”式攻击。 +# 五、反序列化攻击 +反序列化攻击的本质在于Java 序列化自身的缺陷。 + +众所周知,序列化的目的是使Java 对象转化成字节流,方便存储或者网络上传输。Java 对象分解成字节码过程叫做序列化,从字节码组装成 Java 对象的过程叫做反序列化,这两个过程分别对应于的 writeObject 和 readObject 方法。 + +问题在于 readObject 在利用字节流组装 Java 对象时不会调用构造函数,也就意味着没有任何类型的检查,用户可以复写 readObject() 方法执行任何希望执行的代码。 + +攻击者修改过的readObject代码,通过序列化方法writeObject()转成字节流打包发送给服务端,服务端把字节流转成对象时,自动调用了这串字节流中的被恶意修改的readObject()方法,攻击者可以在这段代码里做任何事情。 + +2018年5月,[oracle官方宣布要废弃序列化](https://www.bleepingcomputer.com/news/security/oracle-plans-to-drop-java-serialization-support-the-source-of-most-security-bugs/) + # 参考资料 - [维基百科:跨站脚本](https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC) From b059084fd20ba6a63db7274246e10f05ca78a945 Mon Sep 17 00:00:00 2001 From: thy_shenzhen Date: Wed, 13 May 2020 09:49:23 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/攻击技术.md | 1 + 1 file changed, 1 insertion(+) diff --git a/notes/攻击技术.md b/notes/攻击技术.md index 54695f83..46fa2251 100644 --- a/notes/攻击技术.md +++ b/notes/攻击技术.md @@ -3,6 +3,7 @@ * [二、跨站请求伪造](#二跨站请求伪造) * [三、SQL 注入攻击](#三sql-注入攻击) * [四、拒绝服务攻击](#四拒绝服务攻击) +* [五、反序列化攻击](#五反序列化攻击) * [参考资料](#参考资料) From 4f8443459733ac43fe490c48e035745f1bde0516 Mon Sep 17 00:00:00 2001 From: thy_shenzhen Date: Wed, 13 May 2020 22:22:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=B8=A5=E6=A0=BC?= =?UTF-8?q?=E8=AF=AD=E6=B3=95=EF=BC=8CIntelliJ=20IDEA=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=A1=A8=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/notes/面向对象思想.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notes/面向对象思想.md b/docs/notes/面向对象思想.md index ae923bdb..7afcd9d0 100644 --- a/docs/notes/面向对象思想.md +++ b/docs/notes/面向对象思想.md @@ -279,7 +279,7 @@ Vihicle .. N ## S.O.L.I.D | 简写 | 全拼 | 中文翻译 | -| :--: | :--: | :--: | +| :---: | :---: | :---: | | SRP | The Single Responsibility Principle | 单一责任原则 | | OCP | The Open Closed Principle | 开放封闭原则 | | LSP | The Liskov Substitution Principle | 里氏替换原则 |