利用越權漏洞竊取Airbnb房東的收款資金
- 2020 年 2 月 12 日
- 筆記
今天分享的Writeup是作者在2017年發現,在最近披露的Airbnb平台漏洞,漏洞類型為越權(IDOR),攻擊者可以利用漏洞向Airbnb平台中的房東收款資訊中添加進自己的銀行賬戶,從而竊取房東的收款資金。
Airbnb是AirBed and Breakfast (「Air-b-n-b」)的縮寫,中文名愛彼迎,它是旅遊人士和房屋房東的中間服務平台,通過該平台,可以為家有空房的房東提供短期租房服務,形式包括假期租賃、公寓租賃、寄宿家庭、招待所床位或酒店客房等,也能讓旅行者可以通過網站或手機預訂世界各地的各種獨特房源,是近年來共享經濟發展的代表之一。愛彼迎公司不擁有任何住宿房間,它僅只是住客與房東之間的中間經紀平台,收入來源為每次預訂發生時從住客與房東雙方收取的一定比例的服務費(傭金),愛彼迎在全球65,000個城市和191個國家有超過3,000,000個預訂住宿清單,具體住宿費用由房東根據愛彼迎公司的建議來確定。
漏洞介紹
IDOR,Insecure Direct Object reference,即」不安全的直接對象引用」,也叫越權漏洞,場景為基於用戶提供的輸入對象進行訪問時,Web應用未進行許可權驗證,不檢查當前訪問請求是否有對目標對象的訪問許可權,因此導致了IDOR漏洞。IDOR漏洞屬於失效的訪問控制範疇,也可以說是邏輯漏洞,或是訪問控制漏洞。測試者可以通過變化請求參數的值來確定該類型漏洞,開發者可以通過源程式碼分析來確定許可權驗證是否合理。
房東在Airbnb平台進行收款設置時,首先Airbnb需要添加收款賬戶,如果添加成功,接下來它就會為房東生成一個收款ID-payout_ID,這個收款ID用於之後跨境收款服務商派安盈( Payoneer)生成的收款賬戶鏈接,通過該鏈接則會跳轉到一個銀行賬戶添加的頁面,在這個頁面中,房東可以把自己的銀行收款賬戶填入其中以備後續對住客的收款。然而,就是在房東收款ID(payout_ID)生成和銀行賬戶添加鏈接的跳轉過程中,存在IDOR漏洞,Airbnb只確認了收款ID(payout_ID)的有效性,卻沒對用戶實際許可權做驗證,因此,攻擊者如果獲得了房東的銀行賬戶添加頁面鏈接,攻擊者可以用自己的Airbnb身份驗證Token(authenticity_token)替換掉房東的Token(authenticity_token),成功跳轉到屬於房東的銀行賬戶添加頁面,然後可以把自己的銀行賬戶添加進入,實現竊取房東收款資金的目的。
漏洞復現
1、在Airbnb平台創建一個受害者賬戶(Victim),在設置裡面添加收款賬戶資訊;
2、開啟BurpSuite抓包,當收款賬戶添加之後,可以在BurpSuite中捕獲到以下POST數據包:
POST /users/payoneer_account_redirect/[payout_ID] HTTP/1.1 Host: www.airbnb.co.in User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://www.airbnb.co.in/users/payout_preferences/115687601/new Cookie: [cookie_values] Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 118 authenticity_token=&user_id=[user_id]
3、這裡先不著急填寫收款賬戶資訊;
4、我們轉到Airbnb平台再創建一個攻擊者賬戶(Attacker),同樣在該攻擊者賬戶中添加收款資訊,然後抓取該過程中的數據包,其中會產生一個包括收款ID(payout_ID)的收款鏈接;;
5、注意,在此過程中攻擊者賬戶同樣會產生一個包括收款ID(payout_ID)的收款鏈接;
6、這裡,我們把攻擊者收款鏈接中的收款ID(payout_ID)替換成受害者的收款ID(payout_ID),
7、然後把該請求發向Airbnb服務端,之後攻擊者會收到Airbnb服務端響應回來的有效Payoneer收款鏈接;
8、通過這個收款鏈接可以打開收款賬戶的填寫頁面,在其中填入攻擊者自己的銀行賬戶,那麼受害者的所有收款都會轉入到攻擊者銀行賬戶。
PoC影片如下,其中Chrome中的Airbnb賬戶為受害者賬戶,而Opera中的賬戶為攻擊者賬戶:
Notice:上述攻擊過程中涉及替換的受害者收款ID(payout_ID)必須是沒用過的,也就是說作為房東的受害者自己還沒有添加過收款資訊,針對這樣的房東受害者,攻擊才能有效。
漏洞影響
以上存在漏洞將會影響Airbnb平台中至少20%到30%的房東賬戶,攻擊者只需利用漏洞往其中添加進自己的銀行賬戶,那麼房東的後續收款將流向攻擊者銀行賬戶,變為攻擊者所有。
漏洞上報及處理進程
2017.2.13 漏洞初報 2017.2.15 告知漏洞細節 2017.2.28 漏洞分類 2017.3.3 漏洞修復 2017.3.21 Airbnb獎勵我3000$
*參考來源:indoappsec,clouds 編譯整理,轉載請註明來自 FreeBuf.COM