本帖最后由 Zapic 于 2021-7-16 20:16 编辑
论坛仅要求申请者拍摄浏览器, 却未对浏览器中内容的真实性进行检查, 存在数种进行伪造购买记录以申请勋章的方法.
接下来以安卓平台的申请为例, 给出一些简单的PoC.
因为我已经购买了安卓平台的Minecraft, 所以特意申请了一个小号来做PoC.
1. 脚本注入
只需要几行简单的代码即可实现
复制代码
即使没有登陆, 也可以伪造已经下载的假象.
2. 本地网站服务器+Hosts强制解析+本地自签SSL伪造安全性
通过Ctrl+S将整个页面保存下来, 然后在本地进行修改.
再放入本地网站服务器内, 通过Hosts文件强制将商店的域名解析到本地, 再使用证书自签工具签署一个商店域名的证书, 使得整个页面看起来就像正常的网站.
与上方效果一致, 不再重复验证.
刷新怎么可能拦截得住大黑客嘛(x
虽然这些伪造手法都可以以假乱真, 但是也存在非常简单的检查方法.
Google商店的验证方案较为简单, 仅需要点击一下"已下载"按钮, 网页会弹出一个选择设备的对话框.
这个对话框对于伪造的网页是非常难以重现的.
即使费尽千幸万苦重现了这个对话框, 以下方法验证对于Google和安卓都通用.
对于微软账号, 可以强制用户使用IE来避开浏览器脚本注入, 并点击地址栏的"锁"图标查看证书信息, 通过对比证书序列号来检查证书是否为伪造的.
但是这个方法对于Google的验证存在困难, 因为微软会自动用Edge浏览器打开该页面, 需要用户进行设置才能停用该功能, 增加的操作成本较大:
1. 在Edge浏览器打开如下链接: edge://settings/defaultbrowser
2. 将"让 Internet Explorer 在 Microsoft Edge 中打开网站 " 设置为"从不".
以上方案可能存在漏洞, 不保证完美.
论坛仅要求申请者拍摄浏览器, 却未对浏览器中内容的真实性进行检查, 存在数种进行伪造购买记录以申请勋章的方法.
接下来以安卓平台的申请为例, 给出一些简单的PoC.
因为我已经购买了安卓平台的Minecraft, 所以特意申请了一个小号来做PoC.
以下内容需要积分高于 9000 才可浏览
1. 脚本注入
只需要几行简单的代码即可实现
- // ==UserScript==
- // @name Fake payment for Minecrate
- // @namespace https://i.zapic.moe
- // @VERSION 0.1
- // @description
- // @author Zapic
- // @match https://play.google.com/store/apps/details?id=com.mojang.minecraftpe
- // @icon https://www.google.com/s2/favicons?domain=google.com
- // @run-at document-start
- // ==/UserScript==
- (function() {
- 'use strict';
- var style = document.createElement("style");
- style.innerHTML = `.LkLjZd.ScJHi.HPiPcc.IfEcue:after {
- content: '已下载';
- font-size: 14px;
- }
- .LkLjZd.ScJHi.HPiPcc.IfEcue {
- font-size: 0;
- transition:0s;
- }`;
- document.head.appendChild(style);
- })();
即使没有登陆, 也可以伪造已经下载的假象.
2. 本地网站服务器+Hosts强制解析+本地自签SSL伪造安全性
通过Ctrl+S将整个页面保存下来, 然后在本地进行修改.
再放入本地网站服务器内, 通过Hosts文件强制将商店的域名解析到本地, 再使用证书自签工具签署一个商店域名的证书, 使得整个页面看起来就像正常的网站.
与上方效果一致, 不再重复验证.
刷新怎么可能拦截得住大黑客嘛(x
虽然这些伪造手法都可以以假乱真, 但是也存在非常简单的检查方法.
以下内容需要积分高于 9000 才可浏览
Google商店的验证方案较为简单, 仅需要点击一下"已下载"按钮, 网页会弹出一个选择设备的对话框.
这个对话框对于伪造的网页是非常难以重现的.
即使费尽千幸万苦重现了这个对话框, 以下方法验证对于Google和安卓都通用.
对于微软账号, 可以强制用户使用IE来避开浏览器脚本注入, 并点击地址栏的"锁"图标查看证书信息, 通过对比证书序列号来检查证书是否为伪造的.
但是这个方法对于Google的验证存在困难, 因为微软会自动用Edge浏览器打开该页面, 需要用户进行设置才能停用该功能, 增加的操作成本较大:
1. 在Edge浏览器打开如下链接: edge://settings/defaultbrowser
2. 将"让 Internet Explorer 在 Microsoft Edge 中打开网站 " 设置为"从不".
以上方案可能存在漏洞, 不保证完美.
本帖最后由 immangguo 于 2021-7-17 08:35 编辑
说实话
如果黑客这么做是为了什么
虚荣吗
还有,照你这么说我java版勋章只需要买一个0.5元的小号就行了
有什么意义呢?
我同意楼下的
防君子不防小人
说实话
如果黑客这么做是为了什么
虚荣吗
还有,照你这么说我java版勋章只需要买一个0.5元的小号就行了
有什么意义呢?
我同意楼下的
防君子不防小人
那我说,现在Java版正版accessToken很多非正常途径都以获取到(例如alt网站、甚至是问答版的log中),用它们来做正版验证,也没见论坛管啊?本质上,我觉得这就是个君子协议,防君子不防小人,就算有别有用心的人拿到了正版勋章也不会有什么严重后果,一个勋章既不能带来积分也不能带来权限,那我觉得搞这么复杂就没必要
洞穴夜莺 发表于 2021-7-16 23:15
那我说,现在Java版正版accessToken很多非正常途径都以获取到(例如alt网站、甚至是问答版的log中),用它 ...
我觉得我提供的方案也不算极其复杂吧.
防君子不防小人是这样没错, 那种通过非正常手段获取他人账号权限的手段我们也管不着.
我也想过是不是可以向朋友借号来录制视频混勋章, 但是这已经在论坛能管辖的范围之外了, 所以我就没提过这件事情.
论坛发放勋章的目的是用来表彰支持正版的人的, 如果盗版玩家也能轻易获得这个勋章, 那么这个勋章直接取消掉罢
可以通过剪辑,把伪造的页面,和查看真正的页面的证书的两段视频剪辑在一起。
更好的办法可能是看看有没有提供 api,然后 oauth2 登录去验证。不过粗略查了下,似乎是没有的。
更好的办法可能是看看有没有提供 api,然后 oauth2 登录去验证。不过粗略查了下,似乎是没有的。
本帖最后由 星E君 于 2021-7-16 23:05 编辑
如果真的要绕开,最简单的就是去买这些游戏,验证完后退了就是了。
xbox,playstation都能这么干,甚至如果有必要每一个正版勋章我都能找到拿他的办法。
防君子不防小人,有这能力去做这些事情的也防不住他们。
如果真的要绕开,最简单的就是去买这些游戏,验证完后退了就是了。
xbox,playstation都能这么干,甚至如果有必要每一个正版勋章我都能找到拿他的办法。
防君子不防小人,有这能力去做这些事情的也防不住他们。
我倡导正版勋章设立的本意是鼓励国内正版的销量,促进良好风气
各平台账号评论系统、安全系统多次更迭,验证方式变成了今天的样子。
诚如楼上各位所说,防君子不防小人。楼主所述的漏洞若要实现需要伪造者不少的精力去折腾,而且目前勋章验证仅由@pogox 一人干白工,有牵涉他过多不必要精力的代价。
正版勋章本身不会取消,不然是典型的因噎废食。
论坛除数字版外承认实体版正版以及XGPU正版,这两个更不需要什么精力,一个可以借朋友的,一个几乎是8块钱白嫖,但同样是合法的正版渠道。让大家都有支持正版的念头,我设立勋章的目的就达到了。
楼主的建议他也能看到,是否采纳由他本人决定,多谢楼主提交的复杂漏洞细节
各平台账号评论系统、安全系统多次更迭,验证方式变成了今天的样子。
诚如楼上各位所说,防君子不防小人。楼主所述的漏洞若要实现需要伪造者不少的精力去折腾,而且目前勋章验证仅由@pogox 一人干白工,有牵涉他过多不必要精力的代价。
正版勋章本身不会取消,不然是典型的因噎废食。
论坛除数字版外承认实体版正版以及XGPU正版,这两个更不需要什么精力,一个可以借朋友的,一个几乎是8块钱白嫖,但同样是合法的正版渠道。让大家都有支持正版的念头,我设立勋章的目的就达到了。
楼主的建议他也能看到,是否采纳由他本人决定,多谢楼主提交的复杂漏洞细节