摘要:最終我發現,除這個Referer功能外,在Xoom的各種功能之中,Paypal都實行了不當的robot.txt配置規則,導致搜索引擎爬蟲索引收錄了其上的一些用戶請求,攻擊者因此可以通過搜索引擎來枚舉出一些用戶敏感信息。每天,世界各地大量PayPal用戶在發生轉賬交易時,都使用了安全的GET方式HTTP傳輸請求,這本身沒有任何問題,但是,原因在於PayPal官方未配置嚴謹安全的robots或禁止爬蟲索引規則,導致Google搜索引擎爬蟲可以收錄爬取到這些用戶轉賬交易的GET請求信息,導致用戶敏感信息泄露。

本文Writeup講述了作者通過簡單Google Dork查詢發現的PayPal信息泄露漏洞。每天,世界各地大量PayPal用戶在發生轉賬交易時,都使用了安全的GET方式HTTP傳輸請求,這本身沒有任何問題,但是,原因在於PayPal官方未配置嚴謹安全的robots或禁止爬蟲索引規則,導致Google搜索引擎爬蟲可以收錄爬取到這些用戶轉賬交易的GET請求信息,導致用戶敏感信息泄露。漏洞最終獲得Paypal官方$1,000的獎勵。

從Paypal的Robots規則說起

通常,網站可通過在根目錄下放置robots.txt文件,來告知網絡搜索引擎爬蟲,自身資源哪些是允許(allow)或不允許(disallow)爬取收錄的,如下所示:

從上面的示例可以看出,robots.txt規則對於防止搜索引擎爬蟲索引收錄網站目錄內容非常有效。但PayPal對此的做法卻是存在問題的,如以下經過解碼的PayPal交易請求示例:

在該轉賬交易請求中,並沒有配置恰當的搜索引擎爬蟲索引收錄攔截規則,這樣的話,攻擊者就可以嘗試通過搜索引擎來枚舉相關的轉賬請求信息。

據我所知,通常來說,要防止搜索引擎爬蟲對類似請求的索引收錄,開發人員需要在頁面中使用noindex標籤來表明禁止收錄該頁,谷歌也在 其官方文檔 中作了相應說明:

另外,HubSpot公司也分享了使用 noindex和nofollow的兩種防止爬蟲索引收錄 方法:

PayPal轉賬交易HTTP請求中的參數說明

當PayPal用戶向其他賬戶發生轉賬交易時,正常來說,PayPal會向服務端發送一個GET方式的HTTP請求,這個請求中包含了recipient、onboardData、sendMoney、currencyCode、payment_type、sendMoneyText、intent等參數,如下:

(GET Method): https://www.paypal.com/signin/?country.x=US&locale.x=en-US&returnUri=https://www.paypal.com/myaccount/transfer/send/external?recipient

(victim_email_address)&amount=1000.00&currencyCode=USD&payment_type=Gift&onboardData={“intent”:”sendMoney”,”recipient”:

(victim_email_address)”,”currency”:”$”,”amount”:”1000.00″,”redirect_url”:” https://www.paypal.com/myaccount/transfer/send/external?recipient

(victim_email_address)&amount=1000.00&currencyCode=USD&payment_type=Gift”,”flow”:”p2p”,”country”:”US”,”locale”:”en-US”,”sendMoneyText”:”Custom message, for example is sending a money to victim_email_address”}

如前所述,如果我們知道這些所有參數,就能嘗試去枚舉Paypal註冊用戶執行的轉賬交易請求。

Xoom相關的信息泄露問題

Xoom是PayPal於2015年收購的跨境轉賬平臺,用於提升PayPal快捷的國際匯款服務。剛開始,在研究這種信息泄露問題時,我只發現了一些用戶郵箱信息,我認爲Paypal可能不會把它當成漏洞處理。但之後我發現在Xoom的用戶安全策略中,它採取了相應措施防止攻擊者的枚舉猜測,因此我還是把這個漏洞上報給了PayPal,當然最後他們也承認了該漏洞的有效性。

當我們第一次註冊Xoom賬戶時,Xoom會正常完成註冊程序並會向用戶發送驗證信息。但是,奇怪的是,當我們用註冊過的Xoom賬戶信息再次註冊時,Xoom仍然會正常完成註冊流程,就像該Xoom賬戶此前從未註冊過一樣。這就神奇了。而另一方面,Xoom在後臺卻會向這個註冊過的Xoom賬戶發送警告郵件,聲稱該賬戶可能正被攻擊者嘗試重新註冊,以此提示用戶要注意賬戶安全。

這種“表面”一套,“背後”一套的註冊機制明顯是不安全和互相矛盾的,只要我們能枚舉出用戶ID,就會是一個漏洞問題。

Xoom的Referrer參數

那如何來枚舉Xoom用戶的個人信息呢?最後,我從其Referer功能中找到了突破。Referer功能本身用於大型網站中的服務優化,通常情況下,Referer鏈接還被應用到一些對接收者的在線廣告促銷活動中。如Xoom的 https://www.xoom.com/xoom-refer-a-friend-program 功能下,新註冊用戶如果首單轉賬超過$400美金,就會獲得一張$20美金的亞馬遜電子購物卡。

最終我發現,除這個Referer功能外,在Xoom的各種功能之中,Paypal都實行了不當的robot.txt配置規則,導致搜索引擎爬蟲索引收錄了其上的一些用戶請求,攻擊者因此可以通過搜索引擎來枚舉出一些用戶敏感信息。

復現Xoom和Paypal的信息泄露漏洞

漏洞發現非常容易,只需執行一個簡單的Google Dork查詢,就能發現Xoom上的一些敏感用戶信息。比如,去發現Xoom上註冊賬戶的相關郵箱信息,可以用以下Google Dork語法:

 · site:xoom.com inurl:’@gmail.com’
 · site:xoom.com inurl:’@yahoo.com’
 · site:xoom.com inurl:’@hotmail.com’
 · site:xoom.com inurl:’@msn.com’
 · site:xoom.com inurl:’e=’ ‘refer’
 · site:xoom.com inurl:’tellapal.id’

當然,你也可以把後綴@yahoo.com更改爲其它郵件服務商。如用Referer功能通過Google收集到的用戶敏感信息:

此外,還可以通過Paypal的付款(Send-Money)等功能來收集用戶敏感信息:

那既然Xoom可以這樣,Paypal行不行呢?結合之前我們分析的Paypal轉賬請求參數,我們有了以下Google Dork查詢語法:

 · site:paypal.com inurl:’payment_type=’
 · site:paypal.com inurl:intent
 · site:paypal.com inurl:’sendMoneyText’
 · site:paypal.com inurl:’recipient=’
 · site:paypal.com inurl:currencyCode=
 · site:paypal.com inurl:onboardData=
 · site:paypal.com inurl:sendMoney
 · site:paypal.com inurl:item_name
 · site:paypal.com inurl:counterparty

利用谷歌搜索引擎,我們發現了sendMoneyText參數相關的用戶敏感信息:

payerView參數相關的用戶敏感信息:

以及em參數相關的用戶敏感信息:

除此之外,通過搜索引擎,我們還發現了一些用戶在網上的電子**:

總結

這種被搜索引擎爬蟲收錄索引的問題,最適當的做法那就是需要配置合理的robot.txt規則了,當然也可以在開發過程中參考一些禁止索引的方法,如谷歌的 Block search indexing with ‘noindex’” 。作爲安全研究來說,我們需要多閱讀其他人的分析報告,多借鑑思考,儘可能地多分析目標應用的各種功能機制,從中發現問題。

*參考來源: medium ,clouds編譯整理,轉載請註明來自FreeBuf.COM

相關文章