android基础四大组件及其基础漏洞


前言

目前做android安全,对于遇到的问题及学习做一个专题记录

android安全有两大部分,第一部分就是web端的安全,不再记录;第二部分就是apk本身的问题包括四大组件,源码,加解密等


一、四大组件简介

Activity

Activity组件就相当于是一个个页面,用户交互的主要部分,用于显示界面处理用户事件,通过Inetnt进行通信

Service

service就是一个个后台服务,eg:下载音乐等操作,其生命周期独立于Activity,通过startService()或bindService()方法进行启动

BroadReceive

用于接收系统或者应用发出的广播消息,用于不同组件之间或者不同应用之间的通信

ContetnProvider

android中用于应用程序之间共享数据的一种机制,允许一个应用向其他应用提供数据,但并不需要知道数据的具体存储细节

二、四大组件常见问题

Activity

1.越权:一些敏感页面需要验证用户身份才能访问,如果对与Activity组件没有进行权限验证,调用此Activity即可进行绕过
2.拒绝服务崩溃:通过Intent给Activity传输畸形数据让程序崩溃
3.对Activity界面进行劫持

Service

1.提权
2.service劫持
3.消息伪造
4.拒绝服务

BroadReceive

1.消息伪造和拒绝服务:通过两种方式注册广播接收器,一种在AndroidMainfest.xml文件中通过<receiver>标签进行静态注册,一种通过Context.registerReceiver()动态注册,指定相应的intentFilter参数。动态注册的广播低质都是默认导出的,如果对于导出的没有做权限控制,导致其组件可以接受一个外不可控的url或者其他命令,导致用户可以越权利用应用
eg:消息伪造【借用大佬的例子,原文放到最后】
2.拒绝服务

org.owasp.goatdroid.fourgoats存在导出风险,功能:一旦接收到action,就会获得对应的phonenumber和message,其类代码:

package org.owasp.goatdroid.fourgoats.broadcastreceivers;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import org.owasp.goatdroid.fourgoats.misc.Constants;
import org.owasp.goatdroid.fourgoats.misc.Utils;

/* loaded from: classes.dex */
public class SendSMSNowReceiver extends BroadcastReceiver {
    Context context;

    @Override // android.content.BroadcastReceiver
    public void onReceive(Context arg0, Intent arg1) {
        this.context = arg0;
        SmsManager sms = SmsManager.getDefault();
        Bundle bundle = arg1.getExtras();
        sms.sendTextMessage(bundle.getString("phoneNumber"), null, bundle.getString("message"), null, null);
        Utils.makeToast(this.context, Constants.TEXT_MESSAGE_SENT, 1);
    }
}

其Action:
在这里插入图片描述

如果伪造这个action,并修改phonenumber和message就可以达到消息伪造目的:

run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --extra string phoneNumber 123 --extra string message ggg
[如果action行为为空,可检测程序崩溃拒绝服务]

ContetnProvider

Binder进程之间通信权限是要可控的,contenprovider组件本身提供一些读取权限控制会导致使用过程中存在一些漏洞
1.敏感信息泄露
2.SQl注入
3.目录遍历
4.数据备份:android8+提供了程序的备份和恢复,由Mainfest中allowBackup属性决定。allowback为ture时,用户可通过adb backup和adb restore进行数据备份和恢复。这个过程可以通过备份其数据信息,然后安装到另一台手机中进行回复,就可以得到敏感数据信息了
adb backup -f allowBackup.db -noapk com.example.sieve
adb restore allowBackup.db

总结

最基础的android相关组件问题差不多就这些,对于drozer具体利用来测试这些问题回头整理一份目前正在实战的一个用例。
ps:记录一下:对于drozer3来讲目前是不能在windows环境上搭建的,github上大佬说过目前仅支持linux环境下搭建droker容器实现,对于一些三方应用没有做严格限制仅能在android14上运行的apk,可以考虑使用drozer2.4左右版本
引用大佬原文链接:https://www.cnblogs.com/GGbomb/p/18067207

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值