2014-06-15 27 views
0

我得到一个shell脚本的安全问题:什么是参与这一文件

#!/bin/sh 
#file name : eg.1 
X=$1 
eval "$X" 

如果我启动此脚本为一组用户或其他用户,有没有提出的任何安全问题?

+1

这完全取决于什么这个脚本的参数是。这是整个剧本吗?这似乎有点无意义。 –

+0

是的,它是,我想知道如果我喂我任何恶意参数,是否会对系统进行任何安全问题。 – VinceFIT

+0

答案是:是的。 –

回答

0

eval命令功能非常强大,非常容易被滥用。 它会导致您的代码被解析两次而不是一次;这意味着,例如,如果您的代码中包含变量引用,那么shell的解析器将评估该变量的内容。如果变量包含一个shell命令,shell可能会运行该命令,无论您是否希望它。这可能会导致意想不到的结果,特别是可以从不受信任的来源读取变量时。

# This code is evil and should never be used! 
fifth() { 
_fifth_array=$1 
eval echo "\"The fifth element is \${$_fifth_array[4]}\"" # DANGER! 
} 
a=(zero one two three four five) 
fifth a 

输出

fifth 'x}"; date; #' 

第五元件是 星期四03月27日16时13分47秒EDT 2014
more details

+0

我可以使用这个文件来实现特权提升,例如,我可以访问一个文件,我没有权限访问通过使用eg.1 – VinceFIT

+0

@VinceFIT,没有。与Windows不同,Linux可以抵御这种攻击。攻击者可以在贵公司执行命令有什么危险。例如,他们可以执行'rm'来删除您的个人数据,触摸创建填充您的分区的无限文件,这反过来导致DoS并且有时使系统无法启动。 – totti