<分区>
我在新闻中看到 Shellshock是 Heartbleed 之后的另一个更大的漏洞. 测试我们的 Bash 的代码shell 是否易受攻击是:
env X="() { :;} ; echo shellshock" /bin/sh -c "echo completed"
详细来说,这段代码是如何工作的?代码 env X="() { :;} ;
做了什么?
如果我在 shell 易受攻击的 Linux 环境中托管网站,它如何易受攻击以及是否会被利用?
<分区>
我在新闻中看到 Shellshock是 Heartbleed 之后的另一个更大的漏洞. 测试我们的 Bash 的代码shell 是否易受攻击是:
env X="() { :;} ; echo shellshock" /bin/sh -c "echo completed"
详细来说,这段代码是如何工作的?代码 env X="() { :;} ;
做了什么?
如果我在 shell 易受攻击的 Linux 环境中托管网站,它如何易受攻击以及是否会被利用?
最佳答案
env x='() { :;}; echo vulnerable' bash -c "echo 这是一个测试"
env
有什么作用?
根据文档,env
在修改后的环境中运行程序。
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
很明显,x
是一个名称/变量,() { :;}; echo vulnerable'
是变量的值。
现在,什么是 () { :;};
?
当一个函数被导出时,Bash 将它的定义作为一个值存储在环境变量中:
$ x() {echo hello world;}
$ export x
$ env | grep x
x=() {echo hello world};
现在,当 x='() {:;}'
意味着类似于写作
$ x() {:;}
$ export x
$ env | grep x
也就是说,我们间接地将export x
制作到由env
创建的新环境中。这里 :
是 Bash 中的空语句。
关于linux - 有人能解释一下这个 "Shellshock"代码在 shell 中是如何工作的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26052189/