挖了谷歌一个 XSS 漏洞,获奖三千美金

大家好,我是楷鹏。

程序员 Matan 挖到了一个 XSS 漏洞并报告给谷歌,奖励 3133.7 美金(约合人民币 22666 元

这是谷歌 Bug Hunter 的奖励规则:

👉 图片来自 https://bughunters.google.com/about/rules/google-friends/6625378258649088/google-and-alphabet-vulnerability-reward-program-vrp-rules

事情起因是这样的,Matan 看到了一篇揭露谷歌 SSRF 漏洞的文章,文章中提到谷歌的这么一个网站

📍 https://toolbox.googleapps.com

于是便开始探寻,先是查看 robots.txt 文件

#apps-toolbox
User-Agent: *
Allow: /apps/main
Allow: /apps/browserinfo
Allow: /apps/checkmx
Allow: /apps/dig
Allow: /apps/har_analyzer
Allow: /apps/loganalyzer
Allow: /apps/loggershark
Allow: /apps/messageheader
Allow: /apps/recovery
Allow: /apps/useragent
Allow: /apps/other_tools
Allow: /apps/encode_decode
Allow: /apps/screen_recorder
Disallow: *

robots.txt 是一份存在于网站根目录的文件,它会告诉网络爬虫应该哪些页面可以爬,哪些不可以,以此避免网站被爬虫过度请求,造成请求负担

在 robots.txt 文件中,一个链接对应一个工具网页

但是有一个例外,/apps/recovery 是不能被直接访问的

在经过简单搜索后,发现它存在子页面

recovery/domain_in_use
recovery/form
recovery/ownership

这些子页面都能够接收多个 URL 参数,比如

recovery/domain_in_use?visit_id=xxx&user=xxx&domain=xxx&email=xxx

如果输入这条继续跳转链接的话

https://toolbox.googleapps.com/apps/recovery/ownership?domain=example.com&email=email@example.com&case=45500368&continue=/apps/recovery/...

这条链接包含参数 domain=example.com,注意还有一个参数是 continue=/apps/recovery/...

输入该继续跳转链接会得到提示:

在这里,发现了问题,CONTINUE 按钮的链接居然是来自于 continue 参数

Matan 验证了下,注入 JavaScript 脚本代码:.../continue=javascript:alert(document.domain)

成功执行 ✅

这个网站没有 CSP 安全策略,也没有任何防护措施,因此可以从任意外部获取资源

继续尝试加载外部恶意脚本,该恶意脚本用于获取用户 IP 地址:

.../continue=javascript:fetch(%27https://api.ipify.org?format=json%27).then(response=%3Eresponse.text()).then(data=%3E{alert(data);%20})

也是成功执行 ✅

到这里,可以确定存在 XSS 漏洞。

回顾一下 XSS 知识

XSS(Cross-Site Scripting),跨站脚本攻击,没有做好校验,相信用户的输入,接收了攻击者的恶意输入(一般是 JavaScript 脚本代码),导致该恶意输入在其他用户页面上执行。XSS 一般分为三种:

  1. 存储型:恶意输入被永久储存在了后台服务中,无论用户什么时候打开网站,拿到该恶意输入,浏览器就会执行
  2. 反射型:恶意输入内嵌在 URL 或者其他输入中,立即被后台转发,用户只要访问构造好的 URL,浏览器就会执行
  3. 基于 DOM:攻击者操作用户的 DOM 结构,进而执行恶意代码

上诉 Matan 的例子,就是一个很典型的反射型 XSS。

但这个 XSS 太低级了,以至于 Matan 本人都难以置信,毕竟谷歌技术是业界有名的

不过谷歌惯常喜欢用自研框架,而这些框架没有做好安全策略,产品翻车也是难免。


One more thing:

{"公众号": "程序员楷鹏","简介": "世界有 10 种人,一种是懂二进制的,另外一种是不懂的","还有": "你肯定会关注的对吧彦祖?"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/688434.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源代码防泄密的重要性

​源代码”作为互联网企业的核心资产之一,其安全性至关重要。源代码泄露不仅可能导致企业丧失技术优势,还可能引发知识产权纠纷、增加竞争对手的市场竞争力,甚至可能被用于恶意目的,如开发恶意软件等。因此,保护源代码…

十天学会单片机可能吗?单片机入门需要多久?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 十天学“会”单片机&#xf…

启用dell服务器的iDRAC

插网线 观察到 dell服务器背板左侧有一个网口,标有iDRAC字样,使用网线将该网口和网段所在的交换机连接起来。 网络配置 重启计算机,依照屏幕显示按F2进入SystemSetup。选择iDRACsettings – Network,需要改动的如下(现…

微信小程序按钮去除边框线

通常我们去掉按钮边框直接设置 border:0 但是在小程序中无效,设置outline:none也没用,当然可能你会说加权重无效 实际上该样式是在伪元素::after内,主要你检查css 还看不到有这个关系,鹅厂就是坑多 类样式::after {border: non…

半小时搞懂STM32面经知识点——系统架构与启动流程

1.Cortex-M系统 1.1系统结构 1.处理器核心: Cortex-M3 2.存储器系统: Flash,SRAM,FSMC等 3.总线接口: 核心通过总线接口与外设设备和存储器进行通信。 总线矩阵:总线矩阵是一种硬件结构,用于连…

kali安装及替换源

一、安装及简单配置 1.安装:地址就不贴了,自己打一下就好 2.虚拟机中打开kali 3.替换包源 (1)使用指令打开/etc/apt/sources.list mousepad /etc/apt/sources.list (2)将内容替换成阿里云源 deb http://mirrors.aliyun.com/kali kali-rolling main n…

如何让组织充满活力?你需要做好这七步

组织活力,通俗点说就是: 从竞争对手角度看,组织活力强的组织能做到竞争对手做不到的事情; 从客户角度看,组织活力强的组织,客户感受好; 从员工角度看,组织活力强的组织&#xff0c…

干货分享:AI知识库-从认识到搭建

随着知识库的出现,人工智能也逐渐加入进来,形成了“AI知识库”。也许将AI和知识库拆开,你能理解是什么意思,但是当两个词结合在一起时,你又真的能理解它是做什么的吗?这就是今天我们要来聊的话题&#xff0…

企业微信hook接口协议,ipad协议http,新增联系人移除联系人到聊天标签

新增联系人移除联系人到聊天标签 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid":"2b0863724106a1160212bd1ccf025295","tagids":[10133101616638504 //标签id数组可以打多个空数组…

Vue3的CRUD模版(附Demo)

目录 前言模版 前言 用惯Vue2之后,在碰Vue3后,整体还是有所区别 此文主要做一个回顾总结 假设界面如下: 可CRUD,对应的新增 添加一些必选项: 其中数据库的设计如下: 模版 对应需要注意参数位置、初始…

排序1——直接插入排序,希尔排序,选择排序,堆排序

1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录…

idea中使用git拉取代码详细操作

注意:解决 Git拉取代码和本地代码丢失问题请点这里查看 以textGit文件为例: 下图:本地刚拉取远程的代码 git上的代码 1、在本地对代码进行修改 2、在git上对代码进行修改,模拟其他人对此文件的提交修改 3、拉取远程代码 4、合并自…