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

时间:2018-05-18 22:00:31

标签: bash security code-injection

我正处于质量保证开发人员bash脚本的过程中。它看起来像这样:

#!/bin/bash

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

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

我的问题是:

  1. 此脚本是否容易受到命令注入的影响?
  2. 如果是,可以提供如何执行任意命令的示例。如果不是,你能解释为什么命令注入是安全的吗?

1 个答案:

答案 0 :(得分:4)

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

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

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