Android应用常见问题
应用安全常见问题及解决方案(2018年9月15日)
Android应用常见问题
1.组件问题
2.Url绕过问题
3.中间人攻击
4.Webview漏洞
Drozer 是一 款 Android 安全测试 框架
Burp Suite
flowdroid 是一 款针对 Android app 数据流分析工具
组件问题
组件暴露 --调用隐藏功能、拒绝服务
组件含有权限未设置保护 --·执行高权限功能
组件配置失当 --造成的被劫持问题(隐式调用被劫持)
造成影响
1.拒绝服务
2.调用未授权界面(甚至后门)解决方案: Drozer 是一 款 Android 安全测试 框架
Url 绕过问题
• 路径遍历漏洞
问题应用/SDK大量使用路径/Url作为参数,如果
不校验路径的合法性,容易导致路径遍历攻击
• Android 平台最典型的路径遍历漏洞是ZipEntry,
URL路径遍历问题跟传统的web相同。• Url白名单绕过
Webview组件加载url,但是使用者并不一定希望
webview组件任何网页都可以加载,因此会实现一
个白名单函数约束加载的网页
• 常见约束ur的函数有contains()、indexOf()、
endwith()、getHost()等等。URL 绕过问题解决方案
• URL白名单存在场景:
• Android:scheme属性
• 暴露组件
• 扫一扫
• 聊天输入
• 评论
不安全校验函数(进行校验)
• contains()
• indexOf()
• endwith()
• getHost()
• getPathSegments()
中间人攻击
Http中间人攻击 --所有http都可以被中间人攻击
Https中间人攻击
漏洞位置:X509TrustManager 、HostnameVerifier 、 setHostnameVerifier
漏洞触发前提条件:
(1)自定义的X509TrustManager不校验证书;
(2)或实现的自定义HostnameVerifier不校验域名接受任意域名;
(3)使用setHostnameVerifier (ALLOW_ALL_HOSTNAME_VERIFIER);
对应场景:
(1)客户端不校验SSL证书或者校验逻辑有误
(2)自定义实现HostnameVerifier接口,却不检查站点域名和证书域名是否匹配
(3)直接使用接受任意域名的HostnameVerifier接口
解决方案:Burp Suite
Webview 漏洞
• WebView远程代码执行(4.3版本以前)
• CVE-2012-6636 addJavascriptInterface 利用该漏洞执行任意Java对象的
方法
CVE-2013-4710 openFile 同源绕过
File 域控制不严
• setAllowFileAccessFromFileURLs
• setAllowUniversalAccessFromFileURLs
• setAllowFileAccess + setJavaScriptEnabled(true)
• 信息泄露
• 密码明文存储 setSavePassword (true)(4.4版本前)
• 地理位置泄露 setGeolocationEnabled
Url 外部可控
• loadUrl (String url)
• loadUrl (String url, Map<String, String> additionalHttpHeaders)
• loadData(String data, String mimeType, String encoding)
• loadDataWithBaseURL(String baseUrl, String data, String mimeType,
String encoding, String historyUrl)
大量暴露javascript接口
通过代码跟踪发现,这个接口可以执行很多操作。例如发短信、打电话、下载应用等等功能
利用方式:将js脚本中间人注入到该应用的webview交互返回的报文中即可
Webview 漏洞解决方案
扫描代码关键字:
1、setSavePassword
2、setGeolocationEnabled
3、setAllowFileAccessFromFileURLs
4、setAllowUniversalAccessFromFileURLs
5、setAllowFileAccess
6、setJavaScriptEnabled
7、@JavascriptInterface
8、setAllowContentAccess
如何检查应用内的隐私泄露?
flowdroid 是一 款针对 Android app 数据流分析工具
工具路径: https :// github.com/secure- - software- - engineering/FlowDroid
source --------- sink
工具分析信息流所有可能的路径,追踪从 source 到 sink 的所有数据流。
source :账号 密码、联系人、短信、数据库、 IMEI 等敏感数据
sink :因特网 、存储卡 、 log 打印、 短信发送