每日热文

挖洞经验 | 看我如何利用两个漏洞实现雅虎邮箱通讯录信息获取

挖洞经验 | 看我如何利用两个漏洞实现雅虎邮箱通讯录信息获取

前段时间,我利用了XSS和CORS错误配置两个漏洞实现了对雅虎邮箱用户的通讯录信息窃取,这些相关信息包括:受害者姓名、电话号码和住址等。在此,我来详细说说整个过程。

跨域资源共享CORS

跨域资源共享(CORS)策略是一种利用附加HTTP头标记,让用户代理获得不同域服务器上对特定资源访问权限的机制。但出于保护用户信息安全的目的,大多浏览器都会实施“同源策略”(Same Origin Policy)机制,所谓“同源策略”指的是不同源的客户端脚本在没有明确授权情况下,不允许读写对方的资源,也即网站上的数据只允许相同域名和端口访问。因此,配置了跨域资源共享(CORS)策略之后,就能实现跨域数据访问。

跨站脚本漏洞XSS(Cross Site Scripting)

XSS一种客户端代码注入方式,利用这种方式可在有漏洞的应用中注入如javascript等运行脚本,实现恶意目的。

漏洞1:CORS错误配置-http://proddata.xobni.yahoo.com

研究人员用Burp Suite对*.yahoo.com子域名的不同请求进行了分析,发现一个很有趣的子域名proddata.xobni.yahoo.com,记录的请求很少,但是都是请求的endpoint都相同——https://proddata.xobni.yahoo.com/v4/contacts。该endpoint含有联系人目录中的每一个联系人,而且带有Access-Control-Allow-Credentials: true的源https://mail.yahoo.com被反射回Access-Control-Allow-Origin。研究人员尝试修改origin为不同的payload但是并没有效果,因此研究人员用一个雅虎的子域名替换了该payload。

我利用Burp Suite对*.yahoo.com子域名进行了枚举之后,发现了一个有意思的域名- proddata.xobni.yahoo.com,虽然该域名涉及的请求不多,但都指向了同一个服务端:https://proddata.xobni.yahoo.com/v4/contacts,该服务端中包含了利用GET请求测试的所有通讯录联系人信息。

我注意服务端响应中包含了Access-Control-Allow-Origin源为https://mail.yahoo.com,且Access-Control-Allow-Credentials: true的头信息,由此,我尝试对Access-Control-Allow-Origin源作出一些修改访问,但可惜一个都成功,之后,我试着把其更改为与mail.yahoo.com不同的其它雅虎子域名。如下:

curl ‘https://proddata.xobni.yahoo.com/v4/contacts‘ -s -H ‘Origin: https://hackerone-cdl.yahoo.com‘ —head

得到的响应为:

Access-Control-Allow-Origin: https://hackerone-cdl.yahoo.com

Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS

Access-Control-Allow-Credentials: true

从上述信息可知,它可以接受任何.yahoo.com子域名为源,且Access-Control-Allow-Credentials为true,这也说是说,如果在.yahoo.com中发现了XSS漏洞,那么就可以利用这种CORS错误配置漏洞来窃取用户的通讯录信息了。Access-Control-Allow-Credentials 头指定了当浏览器的credentials设置为true时是否允许浏览器读取response的内容,具体参考:developer.mozilla

漏洞2: 雅虎邮箱(Yahoo! Mail)服务的XSS漏洞

现在,寻找雅虎XSS漏洞成了关键,但遗憾的是,经过好多天的尝试分析,我也没有发现一个有效的XSS。之后,通过Twitter发贴信息,我发现安全研究人员Enguerran Gillier (@opnsec) 发现了一个雅虎邮箱相关且暂不修复(wontfix)的复制粘贴型XSS漏洞。于是乎,我马上通过其给出的POC信息,结合漏洞1作出了一些测试分析。尽管最终利用方式存在一些用户交互条件,但不管这么多了,只要证明漏洞存在就好。(PS:后来通过向雅虎提交了漏洞我才发现,由于Enguerran Gillier与Yahoo方面存在一些沟通问题,所以才导致该XSS漏洞被Yahoo方面标记为暂不修复(wontfix)状态,我是有多幸运啊!)

最终利用方式(PoC)

以下为我的最终PoC,需要受害者用户登录雅虎邮箱,之后复制以下页面中的任意信息,然后粘贴到新建发信正文中,此后,受害者用户雅虎邮箱中的所有通讯录信息就会通过61315端口自动发送到我的控制端中:

挖洞经验 | 看我如何利用两个漏洞实现雅虎邮箱通讯录信息获取

挖洞经验 | 看我如何利用两个漏洞实现雅虎邮箱通讯录信息获取

视频: 

https://www.youtube.com/embed/lK23tBEVKxU

漏洞报送进程

2017.11.8   通过HackerOne向雅虎报送漏洞

2017.11.9   雅虎初次确认分类并发放前期$150美金奖励

2017.11.15  雅虎方面修复漏洞

2017.12.10  雅虎方面又向我发放了 1850 美元的后期奖励         (共 2000 美金)

*参考来源:sxcurity,freebuf小编clouds编译,转载请注明来自FreeBuf.COM

挖洞经验 | 看我如何利用两个漏洞实现雅虎邮箱通讯录信息获取