Paypal的一个Dom型XSS漏洞分析


发布人:admin分类:网络安全浏览量:32发布时间:2017-12-12

    前言

    DOM xss也称为第三种类型的xss或者类型0。现在DOM型的xss越来越多了,除了因为各种JS库比如YUI,Jquery,Jquery mobile等的使用,还有很多编程语言,比如php更多的支持了HTML5的特性。

    W3school的缺陷代码样例

    很多学习的资料的样例代码都不够安全,比如下面是来自于w3school的Jquery教程中的一段代码。

    这段代码使用html()方法输出html,但是html()并不是一个安全的输出html的方式。可以参考DOM Based XSS Wiki。如果用户可控的输入经过html()输出之前没有合适的过滤,就会导致DOM xss。Jquery的html()相当于javascript的innerHTML。

    Paypal的DOM xss

    子域名financing.paypal.com上有一个功能引起了我的兴趣,它允许用户创建一个不同大小的广告。广告的大小是在客户端,使用jquery控制的。

    比如

    https://financing.paypal.com/ppfinportal/adGenerator/webCopy?460 * 80

    上面是展示”460*80”大小的广告。修改460*80成别的字符串,也会输出在网页里。所以现尝试修改成一个xss payload

    <svg/onload=prompt(1)>
    https://financing.paypal.com/ppfinportal/adGenerator/webCopy?<svg/onload=prompt(1)>

    很不幸,输出的结果经过了URL编码。当然这有两个可能,一个是javascript对我们的输入进行了编码,也可能是通用的浏览器行为,Google Chrome 和Firefox会对问号之后的所有数据进行URL编码。当使用IE测试的时候,成功的执行了我们的脚本。

    我们也可以使用一些技巧在Chrome上弹窗。Chrome对#号之后的内容不会进行URL编码。所以可以通过以下payload在chrome上执行代码。

    https://financing.paypal.com/ppfinportal/adGenerator/webCopy?#<svg/onload=prompt(1)>

    代码分析

    通过一些调试,我们找到了引起漏洞的代码。

    517行document.url通过split函数取了?号的部分,存到了变量url里。然后通过html()进行了输出。

    结论

    随着各种动态js库的使用,DOM xss也会越来越普遍。本文希望告诉读者,除了在服务端对用户的输入进行过滤,在客户端同样要对用户的输入进行恰当的过滤。

    [via rafayhackingarticles.net 翻译整理 by litdg@freebuf]


    被黑站点统计 - 文章版权1、本主题所有言论和图片纯属会员个人意见,与本文章立场无关
    2、本站所有主题由该文章作者发表,该文章作者与被黑站点统计享有文章相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和被黑站点统计的同意
    4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、被黑站点统计管理员有权不事先通知发贴者而删除本文

    免责声明

    本站主要通过网络搜集国内被黑网站信息,统计分析数据,为部署安全型网络提供强有力的依据.本站所有工作人员均不参与黑站,挂马或赢利性行为,所有数据均为网民提供,提交者不一定是黑站人,所有提交采取不记名,先提交先审核的方式,如有任何疑问请及时与我们联系.

    admin  的文章


    微信公众号

    微信公众号


    Copyright © 2012-2022被黑网站统计系统All Rights Reserved
    页面总访问量:21380849(PV) 页面执行时间:91.489(MS)
  • xml
  • 网站地图