【发布时间】:2018-05-18 22:00:30
【问题描述】:
我正在对一个开发人员的 bash 脚本进行 QA。它看起来像这样:
#!/bin/bash
TERM=`cat ./termName.txt` || exit $?
./other-script.sh $TERM
鉴于TERM 变量没有在最后一行引用,感觉就像恶意用户可以通过操纵termName.txt 的内容来利用命令注入,但是我证明这一点的基本尝试失败了注入任何可执行命令。
我的问题是:
- 此脚本是否容易受到命令注入的影响?
- 如果是,您能否提供如何执行任意命令的示例。如果不是,你能解释一下为什么命令注入是安全的吗?
【问题讨论】:
-
它不会运行任意代码,但值是受分词和路径名扩展的影响。
-
在我看来,把这个添加到你的txt文件
; echo "my injected command"。 -
@LuisMuñoz
./other-script.sh只会得到 5 个参数;、echo、"my、injected和command"。不会执行任何代码。在$TERM展开之前解析命令行。 -
@chepner
eval ./other-script.sh $TERM会是一个不同的问题,对吧? -
@LuisMuñoz 是的,这是危险的命令 :)
标签: bash security code-injection