Merge 4f8443459733ac43fe490c48e035745f1bde0516 into f5ad47b47074b437e5b50d10c277679fcd765ab9

This commit is contained in:
geektcp 2020-11-11 13:51:27 +05:30 committed by GitHub
commit d92ba1b13c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,6 +3,7 @@
* [跨站请求伪造](#二跨站请求伪造)
* [SQL 注入攻击](#三sql-注入攻击)
* [拒绝服务攻击](#四拒绝服务攻击)
* [反序列化攻击](#五反序列化攻击)
* [参考资料](#参考资料)
<!-- GFM-TOC -->
@ -185,6 +186,17 @@ ResultSet rs = stmt.executeQuery();
分布式拒绝服务攻击distributed denial-of-service attackDDoS指攻击者使用两个或以上被攻陷的电脑作为僵尸向特定的目标发动拒绝服务式攻击
# 反序列化攻击
反序列化攻击的本质在于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)