四大组件漏洞

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注入)

posted @ 2022-12-13 22:27  Hacker&Cat  阅读(311)  评论(0编辑  收藏  举报