广泛的原型污染小工具

显示具有浏览器徽标的机器人以表示小工具

我们最近推出了新版本的DOM Invader可以找到客户端原型污染(CSPP)。

如果您尚未熟悉客户端原型污染,请查看上面的帖子。只是回顾一下,成功的CSPP利用需要两个组成部分:

在这篇文章中,我们将讨论浏览器API中的CSPP小工具,以及我们如何在普通图书馆中找到它们。

浏览器JavaScript API中的原型污染小工具

我很惊讶地发现浏览器中的一些JavaScript API包含原型污染小工具。接受对象作为参数的函数可以像其他任何对象一样受到污染。这提取功能就是一个这样的例子。当调用fetch时,有一个可选的参数接受对象 - 这允许您控制标头,身体参数等。是原型污染来源:

object.protype.body =“ foo = bar”;
fetch('/',{方法:“ post”})

甚至ES5功能,例如object.defineProperty很脆弱 - 如果开发人员未指定“值”属性,则可以使用原型污染来源来覆盖属性!考虑以下示例:

令MyObject = {属性:“现有属性值”};
object.defineproperty(myObject,'属性',{configurable:false,writable:false});
myObject.property ='应该失败';
alert(myobject.property); //现有属性值

如果您在值属性上使用原型污染,则可以覆盖“属性”,即使它被配置为不写的:

object.prototype.value ='overwritten';
令MyObject = {属性:“现有属性值”};
object.defineproperty(myObject,'属性',{configurable:false,writable:false});
警报(myobject.property); //覆盖!

因此,即使使用原型污染来源使该物业变得不可合作和不可创造,我们也可以毒化由object.defineProperty覆盖属性值。这是因为如果您不在描述符上指定“值”属性,则JavaScript引擎使用Object.Prototype

谷歌分析

在测试各种错误赏金站点的同时,Dom Invader报告了一个名为“hitcallback“被送到一个”Settimeout“下沉。我们将其追溯到Google Analytics(分析)Settimeout沉没,发现“C“包含来自原型污染小工具的价值:

this.ja = function(){

}

Dom Invader显示“hitcallback“小工具”Settimeout“ 下沉:

显示DOM Invader的增强DOM视图的屏幕快照,显示了SettieMout接收器

因此,对于任何使用此版beplay体育能用吗本的Google Analytics(并具有客户端原型污染源)的网站,可以使用此小工具来获得DOM XSS在目标网站上。beplay体育能用吗我们在一个知名的游戏网站和其他人中成功利用了这个小工具。

Google标签管理器

我们已经看到许多使用Googlebeplay体育能用吗标签管理器的网站具有由此产生的脆弱小工具”序列“这最终陷入了评估下沉。还有另一个叫做“event_callback“最终都陷入了Settimeout“沉没了。我们向Google报告了这些,但他们声称这是客户有责任不包含原型污染源。就个人而言,我认为他们还应该在可能的情况下将小工具作为防御措施修复。beplay体育能用吗Web Security Academy网站有其中一个小工具,但值得庆幸的是,没有原型污染来源。我们成功地在WordPress域上利用了该小工具,该小工具现在已经修复了以及其他一些站点。

WordPress的利用看起来像这样:

https://es.wordpress.org/patterns/?__proto__%5BSequence%5D=Alert%28Document.domain%29--

需要尾随的“ - ”,因为该值最终以JavaScript表达式和整数旁边以javascript表达方式结束。

显示DOM Invader的增强DOM视图的屏幕快照,显示了一个评论台

Adobe动态标签管理

谢尔盖·鲍勃罗夫(Sergey Bobrov)在记录各种方面做得很好CSPP漏洞。在GitHub页面上,我注意到Adobe的动态标签管理脚本并决定扫描他们的小工具。Dom Invader发现了多个无证件小工具以及现有的记录的小工具。小工具”cspnonce“正在使用Innerhtml下沉和“Bodyhiddenstyle”,这打了Innerhtml也有一个现有的<样式>在写入值之前的块。

显示DOM Invader的增强DOM视图的屏幕截图,显示了InnerHTML接收器

在脚本的上下文中,还有其他各种小工具。在里面 ”TrackingServersecure“找到的小工具,您无法控制协议,但可以控制主机 - 这可能导致DOM XSS:

屏幕截图显示DOM Invader的增强DOM视图。

结论

当使用允许参数中对象的浏览器API时,必须注意确保您不揭露CSPP以后可以利用的小工具。良好的防御措施是在使用这些API时使用带有空原型的对象。如果您正在编写或使用JavaScript库,那么在部署之前,最好扫描小工具。

回到所有文章

相关的研究

每日Swig的推荐故事beplay2018官网