跳转至

Remote Command Execution

远程命令执行

描述

命令注入是一种旨在通过存在漏洞的应用程序在Android操作系统上执行任意命令的攻击。当应用程序将用户提供的不安全数据(表单、Cookie、HTTP标头等)传递给系统shell时,就可能发生命令注入攻击。在此类攻击中,攻击者提供的操作系统命令通常会以存在漏洞的应用程序的权限执行。命令注入攻击主要归因于输入验证不足。

建议

为了缓解命令注入漏洞,请考虑以下建议:

  • 尽可能避免根据用户输入构建系统命令。
  • 使用参数化查询以安全的方式将参数传递给查询或命令字符串。
  • 使用输入验证来确保对用户提供的数据进行清理,并且仅包含预期的值。

以下是使用参数化查询而不是原始字符串拼接来执行系统命令的代码示例。

val cmd = listOf("ls", "-al", "/path/to/directory")
val pb = ProcessBuilder(cmd)
val process = pb.start()
ProcessResult result = await Process.run(
      "ls",
      ['-al', '/path/to/directory'],
      includeParentEnvironment: false,
      environment: {});

链接

标准

  • OWASP_MASVS_L1:
    • MSTG_PLATFORM_2
  • OWASP_MASVS_L2:
    • MSTG_PLATFORM_2
  • CWE_TOP_25:
    • CWE_20
    • CWE_78
  • GDPR:
    • ART_5
    • ART_32
  • PCI_STANDARDS:
    • REQ_6_2
    • REQ_6_3
    • REQ_11_3
  • OWASP_MASVS_v2_1:
    • MASVS_CODE_4
  • SOC2_CONTROLS:
    • CC_2_1
    • CC_3_4
    • CC_4_1
    • CC_7_1
    • CC_7_2
    • CC_7_4
    • CC_7_5
  • HIPAA_CONTROLS:
    • SECURITY212
    • SECURITY213
    • SECURITY255