挖洞经验 | PayPal未配置恰当的爬虫索引(robots)规则导致的用户敏感信息泄露漏洞

本文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

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章