安全攻防技能 30 讲
何为舟
前微博安全研发负责人
34681 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
开篇词 (1讲)
安全攻防技能 30 讲
15
15
1.0x
00:00/00:00
登录|注册

09 | 反序列化漏洞:使用了编译型语言,为什么还是会被注入?

性能损耗
实现拦截反序列化漏洞攻击
通过hook方式监控应用
避免序列化和反序列化接口类
构建黑名单检测异常调用链
加入签名进行身份校验
通过认证避免接受异常输入
思考漏洞可能带来的影响
了解所使用的序列化和反序列化插件是否存在漏洞
RASP检测
限制序列化和反序列化的类
认证和签名
可导致执行任意命令
实现任意方法调用
控制反序列化过程中调用的类方法
构造恶意序列化数据
思考题
防御方法
产生原理
反序列化漏洞

该思维导图由 AI 生成,仅供参考

你好,我是何为舟。
我们都知道,Java 是一种高层级的语言。在 Java 中,你不需要直接操控内存,大部分的服务和组件都已经有了成熟的封装。除此之外,Java 是一种先编译再执行的语言,无法像 JavaScript 那样随时插入一段代码。因此,很多人会认为,Java 是一个安全的语言。如果使用 Java 开发服务,我们只需要考虑逻辑层的安全问题即可。但是,Java 真的这么安全吗?
2015 年,Java 曾被曝出一个严重的漏洞,很多经典的商业框架都因此受到影响,其中最知名的是WebLogic。据统计,在网络中公开的 WebLogic 服务有 3 万多个。其中,中国就有 1 万多个外网可访问的 WebLogic 服务。因此,WebLogic 的反序列化漏洞意味着,国内有 1 万多台服务器可能会被黑客攻陷,其影响的用户数量更是不可估量的。
你可能要说了,我实际工作中并没有遇到过反序列化漏洞啊。但是,你一定使用过一些序列化和反序列化的工具,比如 Fastjson 和 Jackson 等。如果你关注这些工具的版本更新,就会发现,这些版本更新中包含很多修复反序列化漏洞的改动。而了解反序列化漏洞,可以让你理解,Java 作为一种先打包后执行的语言,是如何被插入额外逻辑的;也能够让你对 Java 这门语言的安全性,有一个更全面的认知。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Java反序列化漏洞是一种严重的安全漏洞,可能导致黑客攻击并控制服务器。本文通过介绍Java反序列化漏洞的产生过程和攻击原理,帮助读者了解其危害和防范措施。文章首先解释了序列化和反序列化的概念,然后详细分析了一个经典的反序列化漏洞案例,以及黑客利用该漏洞进行攻击的过程。通过分析漏洞的产生和攻击原理,读者可以更深入地理解反序列化漏洞的危害性。文章还介绍了黑客利用反序列化漏洞可能进行的攻击,包括执行任意命令和发起拒绝服务攻击。最后,文章强调了防范反序列化漏洞的重要性,提醒读者关注版本更新中的漏洞修复,并加强安全防护措施。 在防范反序列化漏洞方面,文章提出了三种具体的防护方法:认证和签名、限制序列化和反序列化的类以及RASP检测。认证和签名可以通过加入签名的方式进行防护,限制序列化和反序列化的类则通过构建黑名单的方式来检测反序列化过程中调用链的异常。而RASP通过hook等方式,在关键函数的调用中增加一道规则的检测,能够在不修改代码的情况下对反序列化漏洞攻击实现拦截。最后,文章总结了反序列化漏洞的产生原理和防范方法,强调了认证和检测的重要性,并留下思考题,引导读者深入思考和学习。 通过本文的阅读,读者可以全面了解Java反序列化漏洞的危害和防范措施,从而提高对Java语言安全性的认识。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《安全攻防技能 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • 小晏子
    用过fastjson,Fastjson 1.2.24就有反序列化漏洞,这个漏洞能让黑客在服务器上执行任何命令,如果服务器开了open api,且接受参数中有json数据,json解析引用了fastjson 1.2.24,那就有很大的安全风险,拒绝服务攻击,被删除服务器文件,服务器系统被破坏,都是完全可能的。

    作者回复: 是的,fastjson已经曝出过好几次反序列化漏洞了。

    2019-12-28
    7
  • darren
    公司安服,说禁止使用jackson、fastjson,我能用什么呢,protobuf这类会安全些吗?

    作者回复: gson相对安全,protobuf这种限制了数据类型,也比较安全

    2020-09-09
    3
  • alan
    一般说运行web服务时,不要使用root权限,这跟反序列化漏洞的风险也有关系吧?

    作者回复: 应该是跟所有漏洞风险都有关系,最小权限永远都是最佳实践~

    2019-12-27
    3
  • Zane
    JSON反序列化可能有风险,所以大多数App的网络请求数据使用表单么?

    作者回复: JSON还是现在最普遍的序列化工具吧,注意及时更新三方插件,基本还是没问题的。

    2020-03-20
    2
  • 翠羽香凝
    老师给的示例代码,难道只有我一个人没有重现出来吗?重现的时候代码运行,报java.lang.Override missing element entrySet错误

    作者回复: 报错不重要,只要成功执行命令,打开计算器了就说明成功了。

    2020-04-27
    2
    1
  • Cy23
    漏洞是不是反系列化的同时执行了某个代码, 问个本课外问题,最近有台JAVA服务器,密码被破解,通过后台上传功能,上传*马图片和各种后缀页面,通过webshell获取服务器账号,访问sql2000数据库等,暂时还没想好怎么破,隐藏上传图片功能

    作者回复: 这是文件上传漏洞,可以对上传文件的类型和存储的位置做限制,基本可以修复。

    2019-12-29
    2
    1
  • goarulin
    请问老师,我这执行了这段代码一直报Exception in thread "main" java.lang.annotation.IncompleteAnnotationException: java.lang.Override missing element entrySet

    作者回复: 报错是必然的,因为本来就是错误的输入。但不重要,只要成功执行命令就可以了。

    2020-09-17
  • Teresa
    Jackson Databind漏洞、apache log4j反序列化漏洞,我只知道通过及时升级jar包版本修复漏洞。

    作者回复: 大部分情况下,能够及时升级就足够了。

    2020-03-23
  • 有学识的兔子
    老师您好。像常用的渗透工具 metaexploit 里面提供的meterpreter/reverse_tcp是不是也是利用系统的反序列化的工作流程,执行一段黑客插入的恶意指令程序.

    作者回复: 我理解的reverse_tcp应该是用来建立一个反弹shell的工具,跟具体的漏洞无关。

    2019-12-29
  • geek.flare
    我是做.net 开发,在编写服务之间的通讯时经常会用到序列化和反序列化,以前真没想到会有这种漏洞。请问.net有类似的RASP工具吗?

    作者回复: 目前开源的RASP,我知道的只有百度的OpenRASP,不过似乎并没有支持.net。商业版本倒是会有宣称能够实现的。从原理上说,和Java的实现机制应该比较类似。

    2019-12-28
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部