考虑这个(尝试)shell注入的例子:
test1.sh:
foreach (var item in mobileDevices)
{
dynamic mobileDevice = item.Value;
var id = (int)mobileDevice.id;
var name = (string)mobileDevice.name;
}
z.dat:
#!/bin/sh
read FOO
echo ${FOO}
然后运行:
foo && sleep 1 && echo 'exploited'
在我的机器上(Ubuntu w / bash),有效负载总是(正确地)被视为单个字符串,并且永远不会执行恶意睡眠和回显命令。
问题1:是否可以修改此示例以使其易于注入?特别是那些可能易受伤害的特定炮弹?
问题2:如果是这样,是否更改测试脚本以引用变量(如下所示)绝对防御?
test2.sh:
cat z.dat | ./test.sh
谢谢!
答案 0 :(得分:2)