反序列化和Javascript 原型链污染攻击

admin 2021年12月4日23:42:23评论184 views字数 1731阅读5分46秒阅读模式

常见的WEB攻击方法也看多了,学习一个新的也还是很有趣


01

反序列化


简单的来说就是传入的类被反序列化的时候override(重写)了

这个就不多说了,网上的资料多的起飞了,现在不懂反序列化都不好说自己是安全工程师了


具体指引详见Java反序列化漏洞的原理分析》《Java web学习之路-序列化和反序列化》《PHP反序列化入门》


在java里,这种漏洞是在onSerializable的时候触发的。


02


Javascript原型链污染


在Javascript里,是压根就没class的这种的东西,都是一个叫做原型链的。

  1. 对象__proto__属性,函数prototype属性;

  2. 对象函数生成;

  3. 生成对象时,对象__proto__属性指向函数prototype属性。


在没有手动修改__proto__属性的指向时,以上三条便是JavaScript默认原型链指向逻辑。

所以在Javascript里,原型链污染攻击的本质就是重写原型链顶端的方法,和反序列化还是有类似的地方,只是这个触发非反序列化,这个触发是在调用改方法的地方

Javascript原型链污染刚出来,jquery针对这个问题申请了一个CVE(https://github.com/jquery/jquery/pull/4333)

大家都知道在JQuery里$.extend是一个合并对象信息的$方法,在一些ctf中可能会自己写一个merge方法来置换对象属性达到同类extend效果。

每个语言都有一些自己特色的安全问题,这个就是典型的Ecmascript下的安全问题。这个CVE暴露出了一个安全意识,那就是Js这些环境对这块的校验存在设计上的安全性问题,甚至和其他的比起来这个压根就没安全,常见的merge方法直接就可以操作对象了。。。。注意,是直接,就和phithon在他博客里写的那样,很多库都存在类似的方法,一旦开发者不好好传参,那就会导致这个安全问题(原型链污染)。所以针对这个安全问题,我们可以对merge方法增加手动开关和白名单,对于外部传入的参数进行过滤,加强权限控制。

当然这个漏洞只会影响Nodejs和前端的javascript(基于jquery)的应用



03


                                             漏洞思考


其实这2个类型的漏洞都是因为数据完整性被破坏,那么我们在设计一些需求的时候就要评估或者把之类的数据完整性校验思维给设计到产品里,例如反序列化的数据完整性校验,只允许白名单的类进行反序列化。这个在《反序列化漏洞的末日?JEP290机制研究》中就已经有了
其实我们在学习网络安全的时候,最最基础的理论都会说:安全基本原则就是对信息资产提供可用性、完整性和机密性的三大维度的保护。
回头来看上面两个安全问题,都是在信息的完整性上提供的安全防护不足,导致安全风险的产生。
请注意我的用词:安全防护不足。
例如反序列化漏洞的防护,官方提供的方法是jep290这个补丁,这个补丁提供了黑白名单的方案,对数据进行校验,可以有效地防止恶意的数据输入。
我这两年一直在观察网上对与反序列化漏洞的防护方案,基本上就是应急的方案:删掉存在漏洞的模块或者堵死t3协议。
大家发现没有,很少有人真正去阅读weblogic的官方文档或者jep290的文档,而在SDL流程中设计合理的反序列化漏洞的安全方案也都是缺失的。
我在最近对职业生涯的思考中发现,道和术的结合是一件对自身思考方式改变很大的职业进步,一味地研究反序列化漏洞的各类攻击方式这只是术,而站在一个安全从业者上来说,如果不联系数据完整性也不联系攻防对抗的思维单方面考虑问题,就会固步自封。
前些天在体育场看几个小孩子打拳,教练在教他们一句话:要把左拳的出拳速度和力度练的和右拳一样,只有把全身练的高度一致,才是一个入门的拳手。
真正的安全,是在攻防的不断演进中不断升级不断对抗,如果我们一味地挖掘反序列化漏洞,而对明晃晃的安全文档里的各类防护方案不去部署,不去研究绕过,看看自己也只不过是只会右勾拳的菜鸟拳手而已。



END


模板抄袭于雷神测测

本文始发于微信公众号(xsser的博客):反序列化和Javascript 原型链污染攻击

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月4日23:42:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   反序列化和Javascript 原型链污染攻击http://cn-sec.com/archives/482005.html

发表评论

匿名网友 填写信息