在这个博客中,我们将介绍如何使用暴露的组件对android应用程序进行攻击。
第一件事,要注意什么是组件?组件是系统或用户可以通过其与应用程序交互的一个入口点,一些组件依赖于其他组件。
有四种不同类型的应用程序组件:
ContactsContract.Data
, 读取和写入有关特定人员的信息。我正在使用易受攻击的应用程序来显示这些漏洞。
Sieve:
是一个“密码管理器”应用程序,展示了MWR实验室创建的一些常见的Android漏洞。
开始
我们将使用apktool获取清单文件:
现在,您可以分析清单文件并列出所有活动,以通过活动检查暴露的数据并探索应用程序功能。一些时间活动通过调用活动而不直接提供敏感数据的凭据来找出用户敏感数据。Activity Manager (am) : 在adb shell中,您可以使用活动管理器(am)工具发出命令,以执行各种系统操作,例如启动活动,强制停止进程,广播,修改设备屏幕属性,和更多。
$ adb shell am start -n <package_name>/<activity_name>
我们来调用.PWList / activity并检查保存到应用程序中的密码列表。
我们可以使用由MWR InfoSecurity开发的Drozer半自动框架帮助我们提取应用程序的暴露组件并对应用程序执行攻击。
Drozer使用安装在设备上的代理(APK),并提供一个用于执行命令的shell。首先,从
MWR Labs网站
下载drozer代理,并将其安装在经过测试的设备/模拟器上。安装代理后,启动应用程序并启动代理。
之后,设置端口转发,使您的PC可以连接到模拟器内或代理设备上,打开代理的TCP通道:
$ adb forward tcp:31415 tcp:31415
然后启动drozer控制台。
$ drozer console connect
使用drozer命令搜索目标应用程序包名称。
检查应用程序攻击面。
我们可以看到有3个活动,2个内容提供商和2个服务出口。另外,我们可以分析所有出口的攻击面。
让我们从活动开始:
有三个包被列出。让我们检查隐藏的活动
在图片中,我们可以看到一些可能会暴露用户敏感信息的隐藏活动。
执行以下命令将启动一个活动。
开发不安全的内容提供商
内容提供者问题的一个根本原因是它们在清单声明中没有被明确地标记为exported=”false”
因为它们遵循与其他组件相同的默认导出行为。
让浏览筛选应用程序的内容提供商尝试了解漏洞。
这表明两个内容提供商对于要
读取或写入的用户不需要任何权限。但是,DBContentProvider要求用户有权
读/写/ Keys路径。
让我们检查内容URI。
使用Drozer的URI列表
新发现的路径是/ Passwords。这没有任何保护它的权限,并且查询此URI会导致存储在此密码管理器中的所有帐户的披露。以下是查询此内容URI的命令:
内容提供商泄漏了所有存储的密码,但应用程序的开发人员对该密码字段进行了加密或模糊处理。
扫描SQL注入,并尝试找出是否可以从内容提供商中提取信息。
看起来像projection中的注入。我们可以通过在projection中提供单引号来确认sql注入,这会导致SQLite接收到的查询结构中的错误。
您现在可以使用此注入点通过使用来自sqlite_master其中type =’table’的*的投影来查找同一SQLite数据库中的所有表。
让我们从密钥表中提取数据
伟这里我们得到了应用程序的登录密码和pin。这显示了密码管理器的主密码和用于保护数据的pin。
在这篇文章中,我们将通过android应用程序组件和技术来利用它们。我们也了解了如何利用Drozer框架来执行Android应用程序的安全评估。
*参考来源:anandsecurity,