跳过内容

MASTG-TEST-0233: 硬编码 HTTP URL

概述

Android 应用程序可能在其应用程序二进制文件、库二进制文件或 APK 内的其他资源中嵌入硬编码的 HTTP URL。这些 URL 可能指示应用程序通过未加密的连接与服务器通信的潜在位置。

警告

仅存在 HTTP URL 并不一定意味着它们正在被积极地用于通信。它们的使用可能取决于运行时条件,例如 URL 的调用方式以及应用程序的配置是否允许明文流量。例如,如果在 AndroidManifest.xml 中禁用了明文流量,或者受到网络安全配置的限制,则 HTTP 请求可能会失败。请参阅 Android 应用配置允许明文流量

步骤

  1. 对应用程序进行逆向工程( 反编译 Java 代码)。
  2. 运行静态分析( Android 静态分析)工具,并查找任何 http:// URL。

观察

输出包含一个 URL 列表及其在应用程序中的位置。

评估

如果确认任何 HTTP URL 用于通信,则测试用例失败。

硬编码 HTTP URL 的存在并不意味着它们一定会被使用;必须通过仔细的检查和测试来验证它们的实际使用情况。

  • 逆向工程:检查引用 HTTP URL 的代码位置。确定它们是否仅仅作为常量存储,还是通过 HttpURLConnectionOkHttp 等网络 API 主动用于创建 HTTP 请求。
  • 静态分析:分析应用程序的配置,以识别是否允许明文流量。例如,检查 AndroidManifest.xml 中的 android:usesCleartextTraffic="true" 或检查 network_security_config。有关详细指导,请参阅 Android 应用配置允许明文流量

此外,使用动态测试方法来补充此静态检查。

  • 动态分析:使用 Frida 等工具在运行时挂钩网络 API。这可以揭示在执行期间如何以及何时使用 HTTP URL。有关更多详细信息,请参阅 运行时使用传输明文流量的网络 API

  • 网络流量拦截:使用 Burp Suite、mitmproxy 或 Wireshark 等工具捕获和分析网络流量。这种方法可以确认应用程序在实际使用过程中是否连接到已识别的 HTTP URL,但依赖于测试人员全面执行应用程序功能的能力。请参阅 在网络上观察到的明文流量