使用 bash 输入进行 SQL 样式注入?

使用 bash 输入进行 SQL 样式注入?

给定一个允许任何人提供输入的脚本。是否有任何输入可以突破变量。例如给出以下脚本:

echo $1

无论如何,是否可以制作$1类似的东西:

text && rm -rf /

我正在尝试做类似上面的事情,但它不起作用。

谁能确认上述情况是不可能的吗?

答案1

2014 年,有一个名为 Shellshock 的 Bash 漏洞被利用。与常见软件中的大多数漏洞一样,发布了常见漏洞和暴露 (CVE) 公告 CVE-2014-6278。 Shellshock 是 Bash 的远程利用,它允许通过常见服务器软件堆栈(包括 Apache 的 cgi 模块以及 OpenSSH)中的多个攻击向量在远程主机上执行任意代码。

该漏洞影响了从 1989 年到 2014 年的所有 Bash 版本,当容易创建的漏洞被广泛证明后,该漏洞就得到了修补。

进一步阅读:

OWASP 弹震演示文稿,PDF

NIST CVE-2014-6278

ServerFault Shellshock 问题,2014 年

我相信 Distro Repos 中提供的大多数版本都已修补。

更正:炮弹休克是一种家庭漏洞... CVE-2014-6271、CVE-2014-6277、CVE-2014-6278、CVE-2014-7169、CVE-2014-7186、CVE-2014-7187

而且,最好记住,如果存在 Apache Web 服务器或 SSH 等端口转发...以及任何未修补(并且可能未修补)的物联网设备,这些很容易影响 LAN。

答案2

命令分隔符在扩展之前进行处理,因此变量中的\n;&&&或永远不会产生效果,除非变量内容被编辑。||eval

答案3

看起来通配符是一个漏洞:

$ echo 'echo $1' > injection.sh
$ bash injection.sh '/*'
/bin /boot /dev /etc /home /lib /lib64 /media /mnt /opt /proc /root /run /sbin /srv /sys /tmp /usr /var

这就是为什么你总是引用变量:

$ echo 'echo "$1"' > injection.sh
$ bash injection.sh '/*'
/*

相关内容