Facebook任意JS代码执行漏洞原理与利用分析

2018 年 10 月 4 日 FreeBuf

前言

最近FB Android应用爆出了一个任意JS代码执行的漏洞,着手分析了一下,也挺有趣,分享学习一下,有不当之处还请包涵,欢迎讨论学习。

0x00 概述

测试环境:

Android 4.4 nexus 5

测试版本:

Facebook com.facebook.katana_186.0.0.48.81.apk

测试版本下载:

9Apps

0x01 漏洞原理

根据漏洞的简单描述,得知漏洞起因依旧是deeplink的问题,如果对这方面知识不熟悉,可以参考我的其他文章。

既然是deeplink,切入的思路从AndroidManifest.xml也是比较正常的思路。通过搜索”<data”、”android:scheme”等关键词,可以定位到关键的activity:

分析可知:

该Apk有三个scheme,但只有两个有属性android:name=”android.intent.category.BROWSABLE,因此可以通过浏览器打开的只有”fb”、”dialtone”;

自然,切入com.facebook.katana.IntentUriHandler查看究竟;

这里有个小问题,直接打开jeb是无法找到这个类的,直接找台root手机在内存中把dex抠出来,或者在app的data/dex目录下都可以拿到dex文件;

拿到了总共12个dex文件;

全部加载进jeb,搜索关键字即可。

但是存在问题就是分散的dex,jeb无法进行关联,因此大部分会反编译失败,只能阅读smali代码,或者另一种思路,即是将其合并成一个完整的dex。

这里我们进行另一个思路,我们可以全局搜索fb://关键字,看看有什么关键的信息。

搜索后我们发现assets/Bundle-fb4.js.hbc,通过分析该文件,找到了大量的fb协议deeplink。

我们再继续搜索关键词embedded_native_browser、ama等等。

发现另一个文件react_native_routes.json存在大量可利用的特征:

从名字也可知道这是关键的路由url,由于文件比较长,我们可以自动化脚本处理一下,自动化生成deeplink。

结果节选:

总共有521个链接。

0x02 漏洞利用

根据上面的脚本跑出来的url,可以在其基础上,随机初始化参数后,自动化跑模拟器或真机,观察结果。

Payload:

adb shell am start -a "android.intent.action.VIEW" -d "fb_url"

找出其中一些比较有利用价值的payload:

由于墙内的原因,最终效果引用原作者的图。

XSS 攻击Payload

LFI 攻击Payload

0x03 漏洞防御

1、尽量不要使用 setJavaScriptEnable(true)。

2、尽量使用加密的方式存储deeplink路由信息等等关键信息。

3、进行非法来源检测。

4、不要点击来历不明的超链接。

0x04 参考

Breaking the Facebook for Android application

*本文作者:Tasfa,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

登录查看更多
1

相关内容

Facebook 是一个社交网络服务网站,于 2004 年 2 月 4 日上线。从 2006 年 9 月到 2007 年 9 月间,该网站在全美网站中的排名由第 60 名上升至第 7 名。同时 Facebook 是美国排名第一的照片分享站点。 2012年 2 月 1 日,Facebook向美国证券交易委员会提交集资规模为 50 亿美元的上市申请。
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【图神经网络(GNN)结构化数据分析】
专知会员服务
114+阅读 · 2020年3月22日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
Webkiller 简单利用
黑白之道
11+阅读 · 2019年6月11日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
文本分析与可视化
Python程序员
8+阅读 · 2019年2月28日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
设计和实现一款轻量级的爬虫框架
架构文摘
13+阅读 · 2018年1月17日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Neural Module Networks for Reasoning over Text
Arxiv
9+阅读 · 2019年12月10日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
6+阅读 · 2018年2月26日
Arxiv
8+阅读 · 2018年1月19日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关VIP内容
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【图神经网络(GNN)结构化数据分析】
专知会员服务
114+阅读 · 2020年3月22日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
相关资讯
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
Webkiller 简单利用
黑白之道
11+阅读 · 2019年6月11日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
文本分析与可视化
Python程序员
8+阅读 · 2019年2月28日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
设计和实现一款轻量级的爬虫框架
架构文摘
13+阅读 · 2018年1月17日
相关论文
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Neural Module Networks for Reasoning over Text
Arxiv
9+阅读 · 2019年12月10日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
6+阅读 · 2018年2月26日
Arxiv
8+阅读 · 2018年1月19日
Arxiv
6+阅读 · 2018年1月14日
Top
微信扫码咨询专知VIP会员