Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的bash脚本易受命令注入攻击吗?_Bash_Security_Code Injection - Fatal编程技术网

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

我的bash脚本易受命令注入攻击吗?,bash,security,code-injection,Bash,Security,Code Injection,我正在测试一个开发人员的bash脚本。它看起来像这样: #!/bin/bash TERM=`cat ./termName.txt` || exit $? ./other-script.sh $TERM 鉴于TERM变量在最后一行中没有被引用,恶意用户似乎可以通过操纵termName.txt的内容来利用命令注入,但是我的基本尝试是无法注入任何可执行命令 我的问题是: 此脚本易受命令注入攻击吗 如果是,请提供如何执行任意命令的示例。如果没有,你能解释一下为什么命令注入是安全的吗 脚本不受命令注入

我正在测试一个开发人员的bash脚本。它看起来像这样:

#!/bin/bash

TERM=`cat ./termName.txt` || exit $?
./other-script.sh $TERM
鉴于
TERM
变量在最后一行中没有被引用,恶意用户似乎可以通过操纵
termName.txt
的内容来利用命令注入,但是我的基本尝试是无法注入任何可执行命令

我的问题是:

  • 此脚本易受命令注入攻击吗
  • 如果是,请提供如何执行任意命令的示例。如果没有,你能解释一下为什么命令注入是安全的吗
    脚本不受命令注入的影响,因为
    $TERM
    的扩展只会经历分词和路径名扩展,然后结果会按字面意思传递给
    其他script.sh
    。但是,应该引用它,以便
    other script.sh
    TERM
    的确切内容作为单个参数接收

    如果
    TERM
    的值为
    ab
    ,则
    其他脚本
    将收到两个参数,
    a
    b
    ,而不是一个。使用
    “$TERM”
    传递准确的值
    ab


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

    脚本不受命令注入的影响,因为
    $TERM
    的扩展只会经历分词和路径名扩展,然后将结果按字面意义传递给
    其他脚本.sh
    。但是,应该引用它,以便
    other script.sh
    TERM
    的确切内容作为单个参数接收

    如果
    TERM
    的值为
    ab
    ,则
    其他脚本
    将收到两个参数,
    a
    b
    ,而不是一个。使用
    “$TERM”
    传递准确的值
    ab


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

    它不会运行任意代码,但该值会被分词和路径名扩展。我认为,将其添加到您的txt文件
    ;echo“my injected command”
    @LuisMuñoz
    /other script.sh
    将只获得5个参数
    echo
    我的
    注入的
    命令“
    。不会执行任何代码。命令行是在展开
    $TERM
    之前解析的。@chepner
    eval./other-script.sh$TERM
    会是另一个问题,对吗?@LuisMuñoz是的,这是一个危险的命令:)它不会运行任意代码,但该值会被分词和路径名展开。我认为,将其添加到您的txt文件
    ;echo“my injected command”
    @LuisMuñoz
    /other script.sh
    将只获得5个参数
    echo
    我的
    注入的
    命令“
    。不会执行任何代码。命令行是在展开
    $TERM
    之前解析的。@chepner
    eval./other-script.sh$TERM
    可能是另一个问题,对吗?@LuisMuñoz是的,这是一个危险的命令:)注意,根据
    other script.sh
    对其参数所做的操作,通配符展开可能构成信息泄漏。攻击者可以传递诸如“/path/to/secret/dir/*”之类的信息,如果结果对攻击者可见(甚至是间接的),则攻击者可以使用它来浏览您的目录结构。如果
    other script.sh
    无法正确处理其变量,则它可能始终存在自身的漏洞(包括命令注入)。请注意,根据
    other script.sh
    对其参数所做的操作,通配符扩展可能构成信息泄漏。攻击者可以传递诸如“/path/to/secret/dir/*”之类的信息,如果结果对攻击者可见(甚至是间接的),则攻击者可以使用它来浏览您的目录结构。如果
    other script.sh
    不能正确处理它的变量,它可能总是有自己的漏洞(包括命令注入)。