阅读:

1,806

序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,类ObjectInputStream类的readObject()方法用于反序列化。比如你可以将字符串对象先进行序列化,存储到本地文件,然后再通过反序列化进行恢复。

事件介绍

2015年11月6日,FoxGlove Security安全团队的发布的一篇博客中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些大名鼎鼎的Java应用,实现远程代码执行。

然而事实上,博客作者并不是漏洞发现者。博客中提到,早在2015年的1月28号,Gabriel Lawrence和Chris Frohoff在AppSecCali上给出了一个报告,报告中介绍了Java反序列化漏洞可以利用Apache Commons Collections这个常用的Java库来实现任意代码执行,当时并没有引起太大的关注,但是实际上这是2015年最被低估的漏洞。

确实,Apache Commons Collections这样的基础库非常多的Java应用都在用,一旦编程人员误用了反序列化这一机制,使得用户输入可以直接被反序列化,就能导致任意代码执行,这是一个极其严重的问题,博客中提到的WebLogic等存在此问题的应用可能只是冰山一角。今天就为大家带来平台事件规则解读系列第十篇——影响深远的反序列化漏洞。

序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,类ObjectInputStream类的readObject()方法用于反序列化。比如你可以将字符串对象先进行序列化,存储到本地文件,然后再通过反序列化进行恢复。

可问题在于,如果Java应用可以对任意数据做了反序化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。所以这个问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制;假若反序列化可以设置Java类型的白名单,那么问题的影响就小了很多。

反序列化问题由来已久,且并非Java语言特有,在其他语言例如PHP和Python中也有相似的问题。报告中所指出的并不是反序列化这个问题,而是一些公用库,例如Apache Commons Collections中实现的一些类可以被反序列化用来实现任意代码执行。WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些应用的反序列化漏洞能够得以利用,就是依靠了Apache Commons Collections。这种库的存在极大地提升了反序列化问题的严重程度,可以比作在开启了ASLR地址随机化防御的系统中,出现了一个加载地址固定的共享库。

反序列化漏洞攻击分析

Java 是一种十分受开发者喜爱的的语言,而其中最重要的一点是其拥有完善的第三方类库,和满足各种需求的框架;但正因为很多第三方类库引用广泛,如果其中某些组件出现安全问题,那么受影响范围将极为广泛。Java的这个漏洞能够暴露或间接暴露反序列化 API ,导致用户可以操作传入数据,攻击者可以精心构造反序列化对象并执行恶意代码。而两个或多个看似安全的模块在同一运行环境下,共同产生的安全问题 ​

java序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。当反序列化的输入来源于程序外部,可以被用户控制,恶意用户便可以构造恶意的字节流,经反序列化之后得到精心构造的恶意对象。

也就是说一些java应用的数据在网络中传输,我们把里面的序列化数据抠出来,替换成我们的payload,应用程序接收之后把payload进行反序列化,构造的恶意功能(如命令执行)就被执行了。如下图所示:

目前大部分反序列化攻击的数据包中,都有AC ED 00 05这一特征。 而绿盟的全流量分析平台可以监控数据中是否包含AC ED 00 05。如果发现序列化特征可以进行攻击防护,或者0day挖掘。一般流程如下:

总结

从上面的分析中我们可以看到序列化就是把对象转换成一种数据格式,如Json、XML等文本格式或二进制字节流格式,便于保存在内存、文件、数据库中或者在网络通信中进行传输。反序列化是序列化的逆过程,即由保存的文本格式或字节流格式还原成对象。

很多编程语言都提供了这一功能,但不幸的是,如果应用代码允许接受不可信的序列化数据,在进行反序列化操作时,可能会产生反序列化漏洞,黑客可以利用它进行拒绝服务攻击、访问控制攻击和远程命令执行攻击。危害十分严重。而绿盟企业安全平台(NSFOCUS ESP)、绿盟安全态势感知(NSFOCUS TSA)、绿盟全流量分析平台(TAM)可以通过事件规则有效发现失陷主机,另外也可以通过绿盟企业安全平台(NSFOCUS ESP)持续发现和管理安全漏洞,先一步阻止漏洞的再次利用。

更多安全平台事件规则解读,且听下回分解。

python反序列化漏洞_【事件分析】No.10 影响深远的反序列化漏洞相关推荐

  1. e7xue.php漏洞_简要分析最近的dedecms通杀漏洞以及漏洞补丁的绕过

    话说文章写得菜不要紧,首先标题要跟大牛一样! 作者:单恋一支花 出自:t00ls 转载请注明出处,如有雷同,纯属别人抄袭,嘿嘿! 一:写在前面 今天晚上想老婆了,失眠了,蛋裂之余,进吐司寻找基友,惊现 ...

  2. 50岁学python合适吗_广告分析(1)

    因为原分析是用jupyter notebook做的,不知道怎么直接搬运到简书上来,因此暂时采用截图方式,后续若有好的方式再改进. 背景:广告投放数据分析,由于组内接入号码卡的投放业务,因此需要尽早找出 ...

  3. @property python知乎_知乎某处XSS+刷粉超详细漏洞技术分析

    我觉得十分经典的一个漏洞,和大家分享一下~ 好久没法前端漏洞分析了,这次来一个. 将输入的信息传入URI参数,解码以后赋值与location.href.明显可以利用JavaScript:伪协议执行js ...

  4. python实现外星人入侵——3.事件分析

    前言 讲解完了所有的类,接下来就应该讲一下事件了. 在游戏的过程中,最重要的其实应当是在事件发生后进行反应并重新渲染. 先贴game_function的代码: import sys import py ...

  5. python 网页自动处理_推荐一款 10 行 Python 代码实现网页自动化工具

    各种各样的网站在我们日常工作和学习中占据着举足轻重的地位,学习.影音娱乐.查询资料.协同办公,越来越多的任务都被迁移到浏览器 因此,网页也蕴含着很多有价值.我们能够用得到的资源 例如,数据.歌曲.影视 ...

  6. python关系图谱_文本分析之制作网络关系图

    最近忙于学术,公众号更新的有点慢了,在这里给大家个歉,希望大家能继续支持我.由于学术需要,未来一段时间,我以后会有一些文本分析的脚本要出现,希望大家喜欢. 目前简单的文本分析已经满足我人物需要,所以还 ...

  7. python 波形发生_事件与信号

    事件 Event 所有的GUI程序都是事件驱动的.事件主要由用户触发,但也可能有其他触发方式:例如网络连接.window manager或定时器.当我们调用QApplication的exec_()方法 ...

  8. python缩写词_如果连这10个Python缩写都不知道,那你一定是Python新手!

    在本文中,我将告诉大家一些容易忽视的Python编程原理.规则和一些有趣的事实. 简介 对于许多开始学习编程的人来说,Python已经成为他们的首选.Python有非常直观的语法和支持动态类型的灵活性 ...

  9. python 优点 英文_值得关注的 10 个 Python 英文博客

    1. 第一个博客是 Planet python , 它无疑是最出名的python博客之一.去看看吧.我希望你会发现它很有用.它今天还更新过. 2. 第二个博客是 lucumr . 一个 Flask 开 ...

最新文章

  1. 链表 + 数组模拟链表
  2. C#中使用键值对存取值并使用Linq通过key获取value
  3. kaggle入门竞赛之泰坦尼克事故存活预测(xgboost方法)
  4. 最新的20多个JMS面试问答(2020)
  5. mysql gui vim_vim(一): 小技巧
  6. C# - 创建List属性的简单方法
  7. 自定义python框架_Python web 框架Sanic 学习: 自定义 Exception
  8. mysql时间相减得到天数保留两位_【敲黑板!】分布式事务数据库 —-MySQL 数据库开发规范(第四节)...
  9. latex改变文字类型
  10. docker mysql容器安装vim
  11. 如果人生只剩最后一天,你想在这天干什么?
  12. 万智牌天使恩典oracle,#诡局#诡局机制
  13. 最强JAVA核心技术群
  14. 系统待办事项设计_B端产品工作台设计详解
  15. ubuntu如何查看系统是多少位和系统版本号
  16. javascript技术教程蔡敏_JavaScript基础与实践教程 (王萍萍,赵俊莉,孙强) pdf扫描版...
  17. 清华姚班毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》,网友:大神厉害了!创世的快乐...
  18. 正弦波表(应该还会补充)
  19. Java单例模式实现方式
  20. 【jvm】《尚硅谷宋红康JVM全套教程(详解java虚拟机)》上篇 笔记

热门文章

  1. 使用TensorFlow给花朵#127802;分类
  2. 《R语言与数据挖掘最佳实践和经典案例》—— 3.5 将图表保存到文件中
  3. MYSQL 主从复制读写分离实现
  4. navicate连接mysql问题(#1130 - Host 'localhost' is not allowed to connect to this MySQL server)
  5. BotenaGo 僵尸网络利用33个exploit 攻击数百万物联网设备
  6. 微软十月补丁星期二值得关注的0day及其它
  7. Teams零点击可蠕虫跨平台 RCE 漏洞详情公开,微软评为低危且拒绝分配CVE被吐槽...
  8. 99%的程序都没有考虑的网络异常
  9. dyld Library not loaded @rpath libswiftCore dylib 解决
  10. 微信昵称emoj表情保存到mysql数据库时报错怎么解决?