四大组件漏洞
1.四大组件
Activity,界面(可视化与用户交互)
Service,服务(在后台经常进行敏感操作)
Broadcast,广播(组件间传播数据的一种机制)
Content,内容提供者(为存储和获取数据提供统一接口,不同应用共享数据)
2.AndroidManifest.xml
定义了四大组件信息,配置错误导致漏洞
exported="true"或添加intent-filter属性是可被导出的
android:debuggable="true",APP可任意调试
android:allowBackup="true",数据可任意备份导出
设置Schema协议,可通过浏览器构造Intent启动Activity
3.Drozer
APP安全测试工具
https://labs.withsecure.com/tools/drozer下载Agent.apk和msi
环境:jdk1.8、python2.7、ADB
安装第三方库
pip install wheel pip install pyyaml pip install pyhamcrest pip install protobuf pip install pyopenssl --proxy 127.0.0.1:10809(可以用HTTP的代理) pip install twisted --proxy 127.0.0.1:10809 pip install service_identity --proxy 127.0.0.1:10809
运行drozer.msi(第一个叉掉第二个选Will be...,添加路径...\python2.7)
手机安装drozer-agent.apk,打开点关闭来开启服务
端口转发到电脑->连接->识别攻击面(可被导出的四大组件)
adb forward tcp:31415 tcp:31415 drozer console connect run app.package.attacksurface 包名
4.Activity漏洞
钓鱼欺诈/Activity界面劫持(新启动的Activity在Activity历史栈顶并显示,如果Activity加入FLAGACTIVITYNEW_TASK标志位就能至于栈顶,或者有webview加载也可能导致网页钓鱼)
隐私启动Intent包含敏感数据(两个应用用Intent隐式传递,动作都一样,同时弹出两个界面不知道启动的是哪个应用,新版本比较少见)
拒绝服务(没对Intent做异常处理,发送畸形数据导致崩溃)
越权到其他页面(可被导出)
先连接Drozer,列出界面->选一个界面进行越权
run app.activity.info -a 包名 run app.activity.start --component 包名 界面
5.Service漏洞
提权(可被导出,如果没有限制权限或身份验证可对此Service传入参数调用,比如调用system卸载服务或应用)
Service劫持(隐式启动Service,存在同名Service先安装应用的Service优先级高)
消息伪造(暴露的Service对外接收Intent,构造恶意消息在Intent,被调用的Service有安全隐患)
拒绝服务(没对Intent做异常处理,发送畸形数据导致崩溃)
先连接Drozer,列出服务->选一个服务进行拒绝服务攻击
run app.service.info -a 包名 run app.service.start --action 服务
6.Broadcast漏洞
敏感信息泄露(发送的Intent没指定接收者,只是简单通过action匹配,可以注册一个广播接收者嗅探拦截)
消息伪造(暴露的Receiver对外接收Intent,恶意消息放在Intent中,被调用的Receiver有安全隐患)
越权(动态注册的广播默认导出,如果导出的BroadcastReceiver没控制权限,导致BroadcastReceiver可接收外部可控URL或命令)
拒绝服务(没对Intent做异常处理,发送畸形数据导致崩溃)
先连接Drozer,查看路径
run app.broadcast.info -a 包名
反编译看Java,找到路径查看要传什么参数,在AndroidManifest.xml看action标签广播地址,可以传空--action导致拒绝服务
run app.broadcast.send --action 广播地址 --extra 类型 参数名 值
7.Content漏洞
信息泄露(权限控制不足)
先连接Drozer,扫描URI路径->读取数据
run scanner.provider.finduris -a 包名
run app.provider.query URI路径
SQL注入(SQLite数据库)
先连接Drozer,扫描URI路径->注入语句
run scanner.provider.finduris -a 包名 run app.provider.query URI路径 --projection "* from SQLITE_MASTER where type='table';--+"
目录遍历(读取、下载)
先连接Drozer,扫描URI路径->读取文件->下载文件
run app.provider.read content://包名.FileBackupProvider/etc/hosts run app.provider.download content://包名.FileBackupProvider/data/data/包名/databases/database.db 电脑路径
8.Webview漏洞
显示网页的控件,java和js交互的桥梁
跨域漏洞
历史漏洞(任意代码执行、明文存储漏洞(开启密码保护功能,弹框问是否保存,是就明文保存到/data/data/包名/databases/webview.db)
URL配置漏洞(常见URL绕过、URL schema绕过、hearachical URL绕过、shouldOVERideURLloading跳转漏洞)
特殊接口(Intent重定向漏洞、deeplink代码执行、deeplink XSS注入、任意域的XSS注入)