零售商漏洞-可以在请求中获得OTP的三种情况

在输入各种服务的个人帐户时,出于安全目的,通常使用2FA-除了登录名和密码外,您还需要输入一次性代码。

但是,事实证明,即使使用两因素身份验证也并非一切都那么安全-去年,当我可以在请求本身中查看通过SMS发送给客户端的一次性登录代码时,我发现了三项(!)服务。

通过具体示例进一步简要介绍它的威胁。

1.一个受欢迎的加油站网络,超过50万注册客户。

输入您的个人帐户的网络版本时的请求:
POST https://someazs.ua/ua/profile/auth/ Accept: application/json, text/javascript, */*; q=0.01 Accept-Encoding: gzip, deflate, br Accept-Language: ru,en-US;q=0.9,en;q=0.8,uk;q=0.7 Connection: keep-alive Content-Length: 408 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Cookie: PHPSESSID=6n3l2o90hfb020u9ag020u8ha1; usersomeazs_popupcoupons=1;... Host: someazs.ua Origin: https://someazs.ua Referer: https://someazs.ua/ua/login/ User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 X-Compress: null X-Requested-With: XMLHttpRequest data[phone_mask]: 951234567 data[phone]: 0951234567 




答案: {"Status":0,"Code":"7038","status":true,"step2":true}

SMS的代码-7038-仅在服务器的响应中可见。

也就是说,在网站上,输入个人帐户时,响应中包含一个一次性登录代码,该代码通过SMS发送给客户端-您可以通过仅指定客户端的电话号码登录其他人的帐户,然后查看请求本身中的OTP。

在您的个人帐户中可以使用:会员卡号,姓名,余额(UAH,升,咖啡的奖励),交易历史记录,设置-出生日期,客户电子邮件等。



在非技术性的进一步行动(例如,客户振铃)的帮助下,如果运气好的话,人们可以使用客户的钱/升/咖啡。 我为什么要写“祝你好运”? 当我谈论此问题时,我被告知,即使您可以使用该帐户,也要进行其他支票付款,因此很难按别人的奖金进行结算。 但是...

错误很快得到纠正,谢谢。



2.社交商店网络(类似于Fix-Price ),移动应用程序(超过10万次下载)



通过Fiddler跟踪请求时,我注意到了以下内容。 进入移动应用程序后,在输入电话号码和会员卡后,一次性代码将发送给客户端。

问题在于它执行以下形式的GET请求:
 https://bulk.somesmssender.com/?sending_method=sms&from=someretailes&user=onviber4821&txt=%D0%9A%D0%BE%D0%B4+%D0%BF%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F%3A+1234&phone=380987654321&sign=42f66957a03090eb90556b0ef7fed2e1 


一次性代码本身直接在此请求中可见:正在发送的SMS文本为
 %D0%9A%D0%BE%D0%B4+%D0%BF%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F%3A+1234& 


一个简单的转换报告:代码+确认:+1234



即 在应用程序本身中,您可以看到将发送哪些代码。 在这里,您还可以输入他人的帐户,而无需另外考虑。

由于某种原因,该网络的客户受到的欺诈保护最少,因此我多次尝试将信息传达给公司。 我在八月份写了三遍信给Play Market申请页面上显示的地址-我没有收到一个答案,甚至没有一个自动答案。

后来我写信给他们使用SMS分发服务的公司。 他们回答我,有必要联系移动应用程序的所有者,因为他们本身不会影响该公司的信息开发和传输。

的确如此,但是我认为消息传递服务可能会影响他们作为合作伙伴/客户。 另外,我写邮件服务的原因是,我指定的GET请求正是他们的发展,其他客户很可能会遇到相同的情况。 我建议服务部门更正分配逻辑-不要同时发送客户的电话号码和请求中的一次性代码-他们没有回答我。

关于我还想如何传达问题的一些知识
然后我在商店的网站上写了一封联系电子邮件,我等了-再也没有。 但是由于我很固执,所以我在同一个网站上找到了所有可能的联系人(包括普通邮箱和个人地址)并写信给他们-如您所知,也没有人回答。
因此,后来我转向聊天,直接在聊天中问他们是否收到我的信。 最初,他们回答说他们没有看到,然后找到并答应给他们。

有趣的是,除了对应用程序主地址的电子邮件没有反应外,聊天后我还收到了信件。 在其中一个中,我看到了他们是如何将我带入系统的:“聪明的人”



对客户的态度一般。

当我上次检查时, Avrora没有提供修复程序。
分发服务也没有更正,但是这里的情况更为严重,因此我没有直接指出服务的名称。



3.用于存储折扣卡和进行移动支付的移动应用程序(超过13万名客户)

在入口处,您只需要输入电子邮件和代码。 在这种情况下,将执行查询:

 POST http://api.somewallet.com/mobileclient.svc/getRegistrationCode HTTP/1.1 Content-Type: application/json; charset=UTF-8 Content-Length: 100 Host: api.somewallet.com Connection: Keep-Alive Accept-Encoding: gzip User-Agent: okhttp/3.12.3 {"request":{"Culture":"ru_RU","DeviceIdentifier":"4514825570005447","Identifier":"some@email"}} 

答案是:

 {"GetRegistrationCodeResult":{"ErrorMessage":{"Code":0,"LogReferenceId":0,"Message":"SUCCESS"},"Data":{"Code":"044912"}}} 


在此,答案还显示了需要输入的代码(044912)。

登录后,我可以访问以下功能:

  • 查看会员卡和奖金,
  • 某些商店的优惠券,
  • 有关客户的联系信息(电话号码和电子邮件,出生日期和姓名)
  • 设置,更改和删除4位数字的访问代码,
  • 查看付款卡
  • 收到付款令牌(类似于我上一篇文章“ 如何由他人负担出租车费用”中的令牌)。

因此,任何人只要指示该应用程序用户的电子邮件地址,任何人都可以访问该应用程序的所有功能-您无需从用户那里找到一次性代码,因为该代码一经输入便立即可见。 问题与其他两个相同。

他们回应了我的信息,修复了该漏洞,并在经济上感谢他们。



我们可以说有时在服务中,您可以仅通过查看授权请求来绕过两因素身份验证。 这会同时影响网站和移动应用程序。 因此,下次您使用个人帐户开发或测试服务时,请注意这一点。

Source: https://habr.com/ru/post/zh-CN465791/


All Articles