首页 >> 网络安全 >>漏洞分析 >> 基于Android火狐浏览器触发概念验证(PoC)漏洞
详细内容

基于Android火狐浏览器触发概念验证(PoC)漏洞

时间:2020-09-22     作者:Chris Moberly   阅读

总览

可以欺骗Firefox for Android(68.11.0及更低版本)中的SSDP引擎,以零用户交互触发Android意向URI。攻击者可以利用同一WiFi网络利用此攻击,并且表现为目标设备上的应用程序在未经用户许可的情况下突然启动,并进行了意图允许的活动。

目标只需要在手机上运行Firefox应用程序即可。他们不需要访问任何恶意网站或单击任何恶意链接。无需安装中间攻击者或恶意应用。他们只需在咖啡馆的WiFi上喝咖啡,他们的设备就会在攻击者的控制下开始启动应用程序URI。

我是在全球范围内推出最新版本的Firefox Mobile v79时发现此错误的。Google Play商店目前仍在提供易受攻击的版本,但只是在很短的时间内。为了安全起见,我直接将此问题报告给Mozilla。他们立即做出了回应,并很高兴与他们合作,提供了有关此错误确切来源的一些良好信息。他们能够确认该易受攻击的功能未包含在最新版本中,并打开了一些问题以确保以后不会再次引入有问题的代码。

如果您发现Firefox错误,我绝对建议您直接将其发送给他们。该过程非常简单,团队成员精明而友好,这是支持一个有助于塑造我们使用网络方式的项目的好方法。

只要您启用了应用程序更新并且最近已连接到WiFi,您就应该已经收到了新版本并且可以安全地被利用。您可以打开设备上的Firefox,单击地址栏旁边的三个点,然后导航至“设置->关于Firefox”,以进行验证。如果您的版本为79或更高版本,则表示安全。

本文专门针对Android移动应用程序-桌面应用程序没有此漏洞。

攻击结果演示

攻击过程

技术细节

易受攻击的Firefox版本会定期发送SSDP发现消息,以寻找要投射到的第二屏设备(例如Roku)。这些消息通过UDP多播发送到239.255.255.250,这意味着同一网络上的任何设备都可以看到它们。如果在局域网上运行Wireshark,您可能会在网络上看到相同的内容。来自Firefox的发现消息如下所示:

M-SEARCH * HTTP/1.1 Host: 239.255.255.250:1900 ST: roku:ecp Man: "ssdp:discover" MX: 3


本地网络上的任何设备都可以响应这些广播,并提供一个位置来获取有关UPnP设备的详细信息。然后,Firefox将尝试访问该位置,并期望找到符合UPnP规范的XML文件。

这就是漏洞的所在。攻击者无需提供描述UPnP设备的XML文件的位置,而是可以运行恶意的SSDP服务器,该服务器以指向Android意向URI的特制消息作为响应然后,该意图将由Firefox应用程序本身调用。

例如,响应以下消息将强制运行Firefox的本地网络上的所有Android手机突然启动浏览器http://example.com

HTTP/1.1 200 OK CACHE-CONTROL: max-age=1800 DATE: Tue, 16 Oct 2018 20:17:12 GMT EXT: LOCATION: 
intent://example.com/#Intent;scheme=http;package=org.mozilla.firefox;end OPT: "http://schemas.upnp.org/upnp/ 
1/0/"; ns=01 01-NLS: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c SERVER: UPnP/1.0 ST: roku:ecp USN: uuid
:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c::upnp:rootdevice BOOTID.UPNP.ORG: 0 CONFIGID.UPNP.ORG: 1


概念验证

如果您想亲自解决该错误,可以在此处获取旧版本的Firefox for Android

我花了一些时间使用我编写的名为evil-ssdp的工具开发针对其他应用程序中SSDP漏洞的攻击POC 我创建了该工具的修改版本,专门用于演示此Firefox漏洞。它作为ffssdp.py附加到此存储库

我们首先要强制LAN上的所有电话都将Web浏览器弹出到http://example.com

首先,只需在Android设备上打开Firefox,然后将其放在那里即可。

接下来,在与您的Android设备连接到同一无线网络的Linux笔记本电脑上运行漏洞利用程序。Android模拟器也可以使用。在测试时禁用笔记本电脑上的防火墙,或者至少允许接收UDP广播。

# Replace "wlan0" with the wireless device on your attacking machine. python3 ./ffssdp.py wlan0 -t 
"intent://example.com/#Intent;scheme=http;package=org.mozilla.firefox;end"


移动设备上的Firefox应该会在几秒钟内转到http://example.com,并且您还将在攻击工具中看到一些登录信息。

另一个示例是调用其他应用程序。像这样运行攻击工具将使用任意文本弹出邮件应用程序。当您介意自己的企业时,在设备上发生的事情非常令人恐惧:

# Replace "wlan0" with the wireless device on your attacking machine. python3 ./ffssdp.py wlps0 -t 
"mailto:itpeeps@work.com?subject=I've%20been%20hacked&body=OH%20NOES!!!"


还有一个,仅用于测试目的。这只会弹出拨号器:

# Replace "wlan0" with the wireless device on your attacking machine. python3 ./ffssdp.py wlan0 -t 
"tel://1337h825012"


影响力

这不是可以从整个地球上调用的一些超级花哨的内存损坏错误。这是一个非常简单的逻辑错误,基本上可以使您神奇地单击与您位于同一建筑物中的其他人的电话上的链接。

该漏洞类似于RCE(远程命令执行),因为远程(在同一WiFi网络上)攻击者可以触发设备执行未经授权的功能,而最终用户的交互为零。但是,执行并不是完全任意的,因为它只能调用预定义的应用程序意图。

如果在野外使用它,它可能会针对其他应用程序中已知易受攻击的意图。或者,它可能以类似于网络钓鱼攻击的方式使用,在这种攻击中,恶意站点被迫在不知情的情况下被迫进入目标,希望他们输入一些敏感信息或同意安装恶意应用程序。漏洞利用POC可以直接链接到.xpi文件,提示立即安装恶意扩展来破坏浏览器本身。

POC代码是持久性的,因为它将反复触发意图,直到停止为止。这将增加有人同意安装恶意软件包的机会,因为提示将一遍又一遍地弹出,直到攻击者停止运行该工具为止。

使用移动应用程序,很多人可能会长时间使用过时的版本。这是由于仅在连接到WiFi时更新应用程序的默认设置,以及某些应用程序很少(或永远不会)连接到WiFi网络的事实。幸运的是,此错误仅可通过WiFi利用,因此无法连接到更新的错误也不会成为目标。

最终的想法是,这肯定是史诗般的跷,运行Firefox的房间中的每个人都试图弄清楚到底发生了什么。


原文来自:https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/tree/master/firefox-android-2020

点击图片直接加群
更多
ots网络logo

OTS网络安全门户主要提供网络信息安全教程、文章、工具,让更多的小伙伴加入我们的社区一起学习。

技术支持: 建站ABC | 管理登录