Android静态安全检测 -> WebView组件远程代码执行漏洞检测
2016-06-21 17:50
1176 查看
WebView组件远程代码执行漏洞检测 - addJavascriptInterface方法
一、API
1. 继承关系
【1】java.lang.Object
【2】android.view.View
【3】android.view.ViewGroup
【4】android.widget.AbsoluteLayout
【5】android.webkit.WebView
2. 主要方法
【1】addJavascriptInterface(Object obj, String interfaceName)
网页中的Javascript代码可以利用接口定义的名字,来调用应用中的Java代码
【2】getSettings( )
返回一个WebSettings对象
【3】其他方法
参考链接:http://www.apihome.cn/api/android/WebView.html
二、触发条件
1. 使用addJavascriptInterface方法注册可供JavaScript调用的Java对象
【1】对应到smali语句中的特征:Landroid/webkit/WebView;->addJavascriptInterface(
2. Android系统版本低于4.2
【1】对应到smali语句中的特征:
Landroid/os/Build$VERSION;->SDK_INT 获取当前系统的Android版本号
Android版本号大于等于17(0x11)
三、漏洞原理
【1】WebView组件中的addJavascriptInterface方法用于实现本地Java和JavaScript的交互,但是该函数并没有对方法调用进行限制,导致攻击者可以调用任何JAVA类,最终导致JavaScript代码对设备进行任意攻击
【2】详细的原理&POC
https://jaq.alibaba.com/community/art/show?spm=a313e.7975615.40002100.2.drjYfR&articleid=48
https://jaq.alibaba.com/gc/devcenter.htm?spm=a313e.7975615.40002100.3.is2RFv&helpid=68
四、修复建议
【1】建议不使用addJavascriptInterface接口,对于Android API Level为17或者以上的Android系统,Google规定允许被调用的函数,必须在Java的远程方法上面声明一个@JavascriptInterface注解
【2】在使用js2java的bridge时候,需要对每个传入的参数进行验证,避免恶意代码的攻击
相关文章推荐
- 从零开始学Android应用安全测试
- 详解Android App AllowBackup配置带来的风险
- Android App AllowBackup配置带来的风险
- 【android安全】之防止apk被篡改后重编译。
- 【android安全】之使用ssl验证保护网络数据传输安全。
- 【android安全】之保护app组件
- 【android安全】保护app本地数据文件
- E矿大获取密码测试
- Android Security 汇总
- Android静态安全检测 -> 随机数使用不安全
- Android静态安全检测 -> allowBackup标志位
- Android静态安全检测 -> 文件任意读写
- Android静态安全检测 -> SharedPreferences任意读写
- Android静态安全检测 -> debuggable标志位
- Android静态安全检测 -> WebView明文存储密码
- Android静态安全检测 -> WebView忽略SSL证书错误检测
- Android-Drozer的安装错误
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:**");
- 金山手机毒霸工作原理
- Android操作系统安全