怎样发现雅虎邮箱APP的存储型XSS漏洞
怎样发现雅虎邮箱APP的存储型XSS漏洞
本篇文章为大家展示了怎样发现雅虎邮箱APP的存储型XSS漏洞,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
漏洞情况
我测试的对象是 Yahoo! Mail iOS APP应用,也就是雅虎邮箱的iOS版本,在该APP应用程序的xml文件中存在一个存储型XSS漏洞。攻击者可以利用XML特性构造任意HTML/Javascript代码嵌入邮件,在该APP用户打开邮件时,都可以实现这种任意代码渲染呈现,极端点来说,利用XML的实体扩展攻击,可以形成DoS攻击,造成APP服务崩溃。
XML实体扩展攻击:XML Entity Expansion实现,通过在XML的DOCTYPE中创建自定义实体的定义实现,比如,这种定义可以在内存中生成一个比XML的原始允许大小大出很多的XML结构,用它来使这种攻击得以耗尽网络服务器正常有效运行的必需内存资源。
漏洞分析
漏洞初报
在任意的雅虎邮箱登录网页或客户端中登录进入你的雅虎邮箱,然后上传以下样式的一个xml文件作为邮件附件,之后,把这封带以下 yahoo-xss.xml 附件的邮件,发送到你自己的雅虎邮箱或另一雅虎测试邮箱中去。
<?xmlversion=”1.0″encoding=”utf-8″?><svgxmlns=”http://www.w3.org/2000/svg”><script>prompt(document.location)</script></svg>
用雅虎邮箱iOS客户端(Yahoo! Mail iOS APP),进入你的收件测试雅虎邮箱,查看 yahoo-xss.xml 附件,打开它,看看是否有XSS反应。结果是当然有的,会吓了你一跳。如下:
注意:我也搞不懂啥原因,雅虎邮箱iOS应用中的XML渲染机制非常怪异危险。如果你收到包含以上yahoo-xss.xml 附件的多个附件,那么,即使你打开其它附件的时候,这个 yahoo-xss.xml 触发的存储型XSS都会解析跳出。
我匆匆忙忙地上报了这个漏洞,以下是雅虎安全团队人员在HackerOne上给我的回应:
到了这步,接下来我要做的就是想办法来最大化利用这个漏洞,看看能对雅虎邮箱iOS应用形成什么比较坏的安全威胁和影响。但无奈我一时半会也没什么头绪,只好先放一放。
漏洞续报
后来有一天,我突然想到了一种提升漏洞利用且安全无害的方法,那就是我可以用HTTP请求,像“GET”方式一样,尝试对本地APP客户端资源进行获取!BingGo!我一试,真成了!我可以用这种方法获取到雅虎邮箱iOS应用的整个缓存数据,其中包括用户cookie、通讯录列表、邮件内容等等。
漏洞利用复现
首先,在任意雅虎邮箱网页或客户端中登录你的雅虎邮箱账户,上传一个如下包含如下代码的XML文件,然后,把它作为附件发送到你的另外一个测试雅虎邮箱中(受害者邮箱)。
在你的雅虎测试邮箱中打开这个收到的XML附件,基于上面我提到的那个“怪异”的XML解析原因,这里可以想像一种情况:当攻击者向你发送了一个PPT文档,但在附件中也附加了以上那个可以触发XSS的XML文件,那么,当你打开收到的PPT文档时,这个XML文件也就会同时触发XSS反应。也就是说,无论你有多少个附件(包括视频附件),只要包含以上那个XML附件,你打开其它任何一个附件,都会奇怪地触发XML文件中XSS漏洞。
利用该漏洞,构造key.xml,我可以获取受害者邮箱中包括发送者、接收者和联系人在内的通讯录信息。在XML附件代码中,XSS漏洞会首先显示客户端的浏览器版本信息,然后是定位文件位置,再之后是获取邮件列表信息(这里看网速,估计需要30秒左右的时间)。之后,点击key.xml的OK之后,邮件列表信息就通过GET方式回传给攻击者了,像下图这样。我是在内部局域网中做的测试,我的Server接收端用nc -lvvv 8090开启了8090端口监听:
利用该漏洞,构造cachedbpost.xml,我可以获取受害者的Cookie信息。点击cachedbpost.xml的OK之后,整个Cache.db文件就会通过POST方式回传给攻击者,如下图所示。我在内部局域网中做的测试,我的Server接收端用nnc -lvvv 8090 > yahoo.db命令开启了8090端口监听,并把Cache.dbd存储为yahoo.db:
收到完整的Cache.db文件之后,我们把其中的标题头内容过滤,用以下命令检索形成完整的受害者cookie信息:
strings yahoo.db | grep -i Cookie -A 10 -B 5
另外,还可以按http服务端来进行枚举,形成对特定网站的请求cookie:
strings yahoo.db | grep -i https
雅虎安全团队工作人员接收到该漏洞后,迅速进行了分类、修复和处置。
漏洞影响
任何攻击者可以利用该漏洞,构造特定的XML文件发送给任何用户,进而获取到受害者用户邮箱中包括发送者、接收者、Cookie和联系人在内的敏感信息。
我的测试环境:
iPhone 6 – iOS v11.2.5.
受影响iOS客户端版本:
Yahoo! Mail app v4.XX.X (XXXXX)
上述内容就是怎样发现雅虎邮箱APP的存储型XSS漏洞,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注恰卡编程网行业资讯频道。
推荐阅读
-
uni-app结合PHP实现单用户登陆
单用户登陆,即在一个应用中,同一个用户只能在线登陆一个,一个用户登陆,在其他设备上会被即时挤下线,确认后清空登陆该设备上的登陆装填...
-
XSS注入我也不怕不怕啦–PHP从框架层面屏蔽XSS的思考和实践
本文由腾讯WeTest团队提供,更多资讯可直接戳链接查看:微信号:TencentWeTest对于新接触web开发的同学来说...
-
APP开发从入门到精通
-
Laravel Kernel引导流程分析
-
怎么利用PHP框架语言开发手机app?
-
定制开发物流APP跟进合作曲折不断
-
php预防sql注入和xss攻击
functionxss_clean($data){//Fix&entity\n;$data=str_replace...
-
PHP安全篇之XSS攻击
-
基于React和Socket.io实现简单的Web聊天室
-
如何为自己的App搭建后台Api接口