考虑(尝试的)shell注入的此示例:
test1.sh:
#!/bin/sh
read FOO
echo ${FOO}
z.dat:
foo && sleep 1 && echo 'exploited'
然后运行:
cat z.dat | ./test.sh
在我的机器(Ubuntu w / bash)上,有效载荷始终(正确)被视为单个字符串,并且从不执行恶意的sleep和echo命令。
问题1:是否可以修改z.dat,以使test.sh易于注入?特别是是否存在特定的外壳可能容易受到攻击?
问题2:如果是这样,更改测试脚本以引用变量(如下所示)是绝对防御吗?
test2.sh:
#!/bin/sh
read FOO
echo "${FOO}"
谢谢!