Android常见漏洞解决

2019-03-21  本文已影响0人  SoundYoung

1 , WebView跨域访问漏洞

问题描述:

该漏洞产生的原因是在Android应用中,WebView开启了file域访问,且允许file域对http域进行访问,同时未对file域的路径进行严格限制所致。攻击者通过URL Scheme的方式,可远程打开并加载恶意HTML文件,远程获取APP中包括用户登录凭证在内的所有本地敏感数据

问题解决:

在laodurl方法之前,加入如下代码

try {

    if (Build.VERSION.SDK_INT >= 16) {

        Class<?> clazz = webView.getSettings().getClass();

        Method method = clazz.getMethod(

                "setAllowUniversalAccessFromFileURLs", boolean.class);

        if (method != null) {

            method.invoke(webView.getSettings(), true);

        }

    }

} catch (IllegalArgumentException e) {

    e.printStackTrace();

} catch (NoSuchMethodException e) {

    e.printStackTrace();

} catch (IllegalAccessException e) {

    e.printStackTrace();

} catch (InvocationTargetException e) {

    e.printStackTrace();

}

2,程序数据任意备份

问题描述:

安卓AndroidManifest.xml文件中android: allowBackup为true,app数据可以被备份导出

解决办法:

AndroidManifest.xml 配置文件中中设置为android:allowBackup=”false”

3,硬编码风险

问题描述:

硬编码是指将可变变量用一个固定值来代替的方法,用这种方法编译后,如果以后需要更改此变量就非常困难了。最好的方法是,将一个固定数值定义为一个标记,然后用这个特殊标记来取代变量名称。当标记名称改变时,变量名不变。这样,当重新编译整个程序时,所有变量都不再是固定值,这样就更容易的实现了改变变量的目的。

解决办法:

不要在类中使用直接的url而是要配置在values中

4,WebView明文储存密码漏洞

问题描述:

WebView默认开启密码保存功能mWebView.setSavePassword(true),如果该功能未关闭,在用户输入密码时,会弹出提示框,询问用户是否保存密码,如果选择"是",密码会被明文保到/data/data/com.package.name/databases/webview.db

解决办法:webSettings.setSavePassword(false);

5,WebView远程代码执行漏洞

问题描述:

Android API level 17以及之前的版本,由于程序没有正确限制使用addJavascriptInterface方法,远程攻击者可通过使用Java Reflection API利用该漏洞执行任意Java对象的方法。通过addJavascriptInterface给WebView加入一个JavaScript桥接接口,JavaScript通过调用这个接口可以直接与本地的Java接口进行交互。导致手机被安装木马程序,发送扣费短信,通信录或者短信被窃取,甚至手机被远程控制。

解决办法:

if(Build.VERSION.SDK_INT=<17){

webView.removeJavascriptInterface("searchBoxJavaBridge_");

    webView.removeJavascriptInterface("accessibility");

    webView.removeJavascriptInterface("accessibilityTraversal");

}

6,Activity最小化特权

7,Sevice最小化特权



上一篇 下一篇

猜你喜欢

热点阅读