利用DAST发现Android应用API中泄露的AWS凭证:隐藏威胁的挖掘之旅

本文详细介绍了如何通过动态应用安全测试(DAST)技术,使用Mobile Security Framework(MobSF)工具发现Android应用API中泄露的AWS访问密钥,并演示了由此可能导致的基础设施接管风险。

发现隐藏威胁:我如何通过DAST在Android应用API中发现泄露的AWS凭证

作者:MuhammadKhizerJaved

大家好,欢迎回来!很久没写博客了,我很兴奋能与漏洞赏金社区分享这个最近的发现。在我最新的漏洞赏金狩猎冒险中,我发现了一个关键漏洞,涉及Android应用API中泄露的AWS凭证。这个漏洞有可能导致AWS基础设施被接管。让我们深入了解我如何使用动态应用安全测试(DAST)技术发现这个隐藏威胁。

理解DAST(动态应用安全测试)

什么是DAST?

动态应用安全测试(DAST)是一种通过分析运行状态下的应用程序来测试其安全性的方法。与静态分析(在不执行代码的情况下检查代码)不同,DAST实时与应用程序交互,以识别攻击者可能利用的漏洞。

DAST的优势:

  • 真实世界模拟:在应用程序运行时进行测试,提供其在真实攻击场景下行为的洞察。
  • 全面覆盖:可以识别仅通过静态分析可能不明显的漏洞。
  • 持续测试:可以集成到CI/CD管道中,以进行持续的安全保障。

静态分析与动态分析的区别:

  • 静态分析(SAST):检查应用程序的源代码、字节码或二进制代码。它在开发过程早期发现问题很有用。
  • 动态分析(DAST):在应用程序运行状态下进行测试,提供应用程序在攻击下性能的更真实视图。

工具包

为了发现这个漏洞,我使用的工具是移动安全框架(MobSF),这是一个用于移动应用程序的自动化安全测试框架。它支持Android和iOS平台,并提供全面的静态和动态分析能力。

静态分析:

在之前的博客文章《黑客攻击公司的SMS API服务提供商 | Android应用静态安全分析 | 漏洞赏金POC》中,我们深入探讨了Android应用的静态分析,包括检查源代码中的漏洞和识别不安全的编码实践。

聚焦动态分析:

对于这篇博客文章,我们将重点介绍MobSF的动态分析能力。

设置测试环境

在深入探讨发现的漏洞之前,让我们谈谈设置和使用。

准备测试环境:

如果在安装MobSF或设置设备进行动态分析时遇到任何问题,请考虑阅读官方文档https://mobsf.github.io/docs/#/dynamic_analyzer,其中大部分关于设置测试环境的内容都来自那里。

  1. 设置MobSF:下载最新标记的MobSF docker镜像

    1
    
    docker pull opensecurity/mobile-security-framework-mobsf:latest
    
  2. 设置Android模拟器:设置这些设备以运行应用程序。 我通常使用Android Studio模拟器,所以这里分享步骤…

    • 创建一个没有Google Play Store的Android虚拟设备(AVD)。
    • 选择一个镜像,MobSF支持arm、arm64、x86和x86_64架构,Android版本5.0–9.0,最高到API 28。
    • 不要从Android Studio IDE/AVD管理器UI启动AVD,而是使用模拟器命令从命令行运行AVD。
    • 将你的Android SDK模拟器目录附加到PATH环境变量。

    示例位置:

    • Mac - /Users/<user>/Library/Android/sdk/emulator
    • Linux - /home/<user>/Android/Sdk/emulator
    • Windows - C:\Users\<user>\AppData\Local\Android\Sdk\emulator

    AVD命令行:

    1
    2
    3
    4
    5
    
    $ emulator -list-avds
    Pixel_2_API_29
    Pixel_3_API_28
    Pixel_XL_API_24
    Pixel_XL_API_25
    

    在启动MobSF之前,使用模拟器命令行选项运行AVD。

    1
    
    $ emulator -avd Pixel_3_API_28 -writable-system -no-snapshot
    
    • 识别模拟器序列号。在这个例子中,标识符是emulator-5554。
    • 设置MOBSF_ANALYZER_IDENTIFIER为emulator-5554当运行MobSF docker镜像时。

    运行MobSF:

    1
    
    docker run -it --rm -p 8000:8000 -p 1337:1337 -e MOBSF_ANALYZER_IDENTIFIER=emulator-5554 opensecurity/mobile-security-framework-mobsf:latest
    

测试过程

MobSF实际上非常容易使用,网上有一些教程和课程你可以跟随学习如何使用MobSF。

上传和分析

基本上是拖放扫描和分析应用程序。一旦完成,它将重定向到该应用程序的静态分析页面。

在这个页面上,你可以点击“开始动态分析”。

MobSF将启动动态分析模块,界面如下所示。

界面非常简单易用,对于这篇博客,我们将重点介绍动态测试组件的活动测试模块。

发现漏洞

在我使用MobSF进行动态测试时,我专注于应用程序运行时背后发出的请求。为此,我主要使用了活动测试器选项,它的作用是逐个启动所有活动并记录发生的一切。

一旦活动完成,我简单地生成了一个动态分析报告。

使用动态分析报告页面上的“HTTP(S)流量”按钮,我们可以看到活动启动时背后发出的所有请求。

这会打开文件web_traffic.txt。

搜索泄露

当我通常遵循这个路线时,我会在Web流量文件中查找某些关键词,如:

1
2
3
4
5
6
7
8
Secret
api
key
token
Authorization
AWS
AWSAccessID
AWSSecretKey

我在这里做了同样的事情,这就是我发现的。

所以,当特定活动启动时,应用程序向api.target.com/services.svc发出请求,因此在响应那个POST请求时,AWSAccessID和AWSSecretKey被泄露。

为了验证这些泄露的凭证,我用我的awscli配置了这些凭证,并运行了一些基本命令来验证这些密钥具有的访问权限。

运行命令aws s3 ls显示我可以访问超过65个AWS S3存储桶。

我们甚至可以从存储桶中上传和删除文件,这可能导致子域名接管场景。

运行命令aws ec2 describe-instances显示了我可以访问的ec2实例。

影响分析

为了进一步升级POC,我运行了一个脚本,枚举你的权限查询IAM服务,如果那不可行,我们可以暴力破解权限。我尝试使用CLI运行所有AWS服务的所有list*、describe*、get*命令,并指出哪些有效。通过这个,我发现我对那个AWS账户有显著的访问权限。

我对那个AWS账户的访问权限

在这一点上,我有足够的证据和影响来报告这个漏洞,所以我做了。

好吧,就是这样,我们探索了如何使用DAST来发现移动应用程序API中的关键漏洞,例如泄露的AWS凭证。通过利用像MobSF这样的工具。希望这篇博客有帮助,你学到了一些东西。如果你有任何问题或建议,请随时评论。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计