利用竞争条件漏洞获取无限量星巴克咖啡

业界 作者:HackerEye 2015-05-22 09:46:20
这篇文章是关于我如何找到一种方法让自己星巴克礼品卡(星礼卡)中的钱变得无限量,里面的钱可以供应我余生的咖啡或者从里面偷出来2百万刀的方法。 我的想法是这样的,先用15刀买三张星礼卡,每张5刀。 星巴克2 我在starbucks.com 里面注册了个人账户,可以添加星礼卡、查询余额、不同星礼卡里面的钱还可以相互转账。 有一类非常有趣的漏洞叫做”竞争条件”。这个bug对于带有余额、凭证或者其他有限资源(主要是金钱)的网站非常常见。 所以,把钱从card1转移到card2是这样的状态:第一个POST请求 : POST /step1?amount=1&from=wallet1&to=wallet2 保存这些值到session中,然后进行第二个POST: POST/step2?confirm 这步是事实上是转移了这笔钱,然后清空了session。 这使得漏洞利用非常困难,因为session在第一次确认请求中被破坏了,然后第二个请求就失败了。但是这个保护措施仍然很容易绕过:使用两个不同的浏览器(session、cookie不同)、相同的账户。 攻击的伪代码:
# prepare transfer details in both sessions 
curl starbucks/step1 -H «Cookie: session=session1» --data «amount=1&from=wallet1&to=wallet2» 
curl starbucks/step1 -H «Cookie: session=session2» --data «amount=1&from=wallet1&to=wallet2» # send $1 simultaneously from wallet1 to wallet2 using both sessions 
curl starbucks/step2?confirm -H «Cookie: session=session1» & curl starbucks/step2?confirm -H «Cookie: session=session2» &
  经过3次失败的尝试之后,我都想放弃了。竞争条件是一种你永远不知道应用程序是否已经脆弱的弱点利用,你只是需要更多的尝试。很多开发者使用弱保护,比如限制每个IP/账户/活动的请求数量,使用随机延迟、或者使用错误方式DB交易。唯一正确的方式来进行安全保护就是pesseimistic lock。 最后我成功了!Wallet1中有5刀的余额,第六次请求创建了两次5刀wallet1中的转账。现在我们有两张,分别有15刀和5刀(共20刀)的卡。现在,我们需要概念证明,否则星巴克的人就会说他们没有bug,也可能是存在一些缓存问题。 让我们去最近的星巴克看看。 16刀能买什么? 这里什么东西最贵? 我猜是三明治。 星巴克3 星巴克4 存入15刀,现在花了16.7刀。这个概念已经被证明啦。现在让我们从信用卡里存入10美元,确保美国的司法系统不会因为1.7美金就把我送进监狱的。 最难得部分-漏洞披露。技术支持人员老老实实的告诉我,联系到他们的技术部门基本没戏,他很抱歉我发现了这样的方式。2015年3月23日,我给星巴克InformationSecurityServices@starbucks.com发了email,这些都是没用的,我仅仅在4月29日收到了回复。我非常努力的寻找在乎这件事的人,设法10天内修复这个bug。 最不令人开心的事情是,星巴克那个家伙联系我之后连句谢谢都没有,还说我是欺诈、恶意行为! 所以,我为什么要这样做,让自己像个白痴一样找麻烦?我可以利用这个漏洞,把假的星礼卡出售给世界各地的人,默默的生成星礼卡,然后在线用比特币五折出售。让我赚个几百万美金非常容易,除非星巴克跟踪星礼卡余额。我其实并不确定要这样做,只是胡乱猜测,这样做肯定会获得巨额利益。 小编点评: 关于竞争条件: 竞争条件是一个共享数据词汇,发生在当多个进程或者线程在读写数据时。多个线程或者进程在读写一个共享数据时结果依赖于它们执行的相对时间,这种情形叫做竞争。竞争条件发生在当多个进程或者线程在读写数据时,其最终的的结果依赖于多个进程的指令执行顺序。 可能很多人没有看明白这个漏洞是怎么回事,其实就是作者在把wallet1的钱转账到wallet2时,快速的发送多个相同请求,由于数据库没有把数据锁住,wallet1的钱还没有从数据库减少时,造成了两次转账,从而凭空多出来了5美刀。

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接