是否可以通过读取和/或中断引号来执行shell注入?

时间:2016-01-06 18:47:57

标签: bash security

考虑这个(尝试)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 

谢谢!