我的 bash 脚本容易受到命令注入的攻击吗?

Is my bash script vulnerable to command injection?

我正在对开发人员 bash 脚本进行 QA。它看起来像这样:

#!/bin/bash

TERM=`cat ./termName.txt` || exit $?
./other-script.sh $TERM

鉴于最后一行没有引用 TERM 变量,感觉恶意用户可以通过操纵 termName.txt 的内容来利用命令注入,但是我的基本尝试证明这是无法注入任何可执行命令。

我的问题是:

  1. 此脚本容易受到命令注入的攻击吗?
  2. 如果是,能否举例说明如何执行任意命令。如果不是,您能解释一下为什么它可以避免命令注入吗?

该脚本不受命令注入的影响,因为 $TERM 的扩展仅在结果按字面意义传递给 other-script.sh 之前进行分词和路径名扩展。但是,它 应该 被引用,以便 other-script.sh 接收 TERM 精确 内容作为单个参数。

如果 TERM 的值为 a b,则 other-script 将收到 两个 个参数,ab,而不是一个。使用 "$TERM" 传递精确值 a b.

如果 TERM 的值为 *,参数的确切列表取决于当前工作目录的内容。使用 "$TERM" 传递精确值 *.