無制限のコーヒーのためにスターバックスをハッキングした方法

これは、スターバックスのギフトカードに無制限の金額を引き換え、無料の生涯コーヒーを確保する方法、または他の方法で数百万ドルを盗む方法を見つけた物語です。



だから、それほど前ではないが、3ドルのスターバックスカードをそれぞれ5ドルで購入するというアイデアが思い浮かんだ。



画像



Starbucks.comには個人アカウントがあり、これらのカードを追加したり、残高を確認したり、カード間で送金することもできます。



このようなあまり知られていないクラスの脆弱性「競合状態」があります。 すべてのプログラマーがプログラムの設計時にコードの並列実行やその結果などの要因を考慮しているわけではないため、脆弱性のあるほとんどのアプリケーションはこの攻撃に対して脆弱である可能性が高いと確信できます。



Webアプリケーションでも、通常、金銭/ポイント/ラッパー/バウチャーの転送に関連する機能で発生します。 搾取の複雑さについてはまた別の話をしますが、今はスターバックスのカード間の移動に戻りましょう。



翻訳は、いくつかのステートフルリクエストから作成されました。 概略的には、最初のPOST / step1?Amount = 1&from = wallet1&to = wallet2リクエストはこれらの値をすべてサーバー上のセッションに入れ、2番目のPOST / step2?確認はセッションに既に保存されているデータを送信してクリアします。



これは、同じ要求を同時に数回繰り返すだけで済むクラシックレースの操作を大幅に複雑にします。 結局、最初の要求がセッションをクリアするとすぐに、2番目の要求は空のセッションで既につまずいています! そして、どういうわけかそれを機能させるために、最初の要求によってクリアされた直後、2番目の要求が実行される前にセッションに書き込まれる複雑な要求を作成する必要があります。 これは、100万回の試行でうまくいく場合もあれば、まったくできない場合もあります。



ただし、このような「半保護」には常に回避策があります。2つの異なるブラウザ/セッションから同じアカウントにログインできます。 次に、操作は次のようになります。



#両方のセッションに翻訳パラメーターを配置

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”

#カード1からカード2への1ドルの送金の同時承認。

curl starbucks / step2?確認-H "Cookie:セッション= session1"&curl starbucks / step2?確認-H "Cookie:セッション= session1"&



5回の試行の後、興味深いことは何も起こらず、私はすでにあきらめたかった。 レースの状態の特性は、どの保護が存在するのかわからないため(IPリクエストの数、アカウントリクエスト、アクションリクエストなど)、サードパーティの攻撃者にしか見つけられないということです。データベース内の適切な悲観的ロックの存在。



6回目のリクエストで奇跡が起こりました-送金は2回行われ、15ドルと5ドル、合計20枚のカードを2枚受け取りました。 これを概念実証とみなすには、店舗がこれらのカードを受け入れることを確認する必要があります。



マーケットストリートで最も近い働くスターバックスに行きました。



-16ドルで何かをくれ。

-O_o。

-さて、最も高価なものは何ですか?

「サンドイッチがあります。」



画像



16.70ドルが出ました。



画像



したがって、私たちの小規模な事業Yに15ドルを投資し、16.70で購入しました。 ハッカーに対する米国の最も人道的な裁判所の態度を知って、私は家に戻り、すぐに別の10ドルをクレジットカードからスターバックスのカードに入金し、企業に1.70ドルもお世話にならないようにしました。



最も難しい部分は、報告プロセスです。 Sapportは、技術チームと私をつなぐことができなかったと正直に答えましたが、まったく何もありませんでした。 私は3月23日にInformationSecurityServices@starbucks.comに無言で書いた(ところで、彼らは4月29日にすでに答えた)。 よく知っている知り合いを通して、気にかけて、10日後に脆弱性が修正された人を見つける必要がありました。



誰も感謝しませんでしたが、私は詐欺や悪意のある行為を犯し、彼らはまだ私に何をすべきかを考えているという曖昧なヒントがありました。



何ができますか? 世界中のさまざまな店で購入した偽のギフトカードから農場を始め、それらのために大量のお金を稼ぎ、ビットコインの50パーセントの割引で(疑いを引き起こさないように)特別なプロモーションサイトで販売することができました。 だから、1、2年働いた後、このフレンドリーな会社から甘いコーヒーで数百万ドルを吸うことができた。



All Articles