【问题标题】:Can someone explain how this "Shellshock" code works in shell [duplicate]有人可以解释一下这个“Shellshock”代码在shell中是如何工作的吗?
【发布时间】:2014-12-06 13:53:46
【问题描述】:

我在新闻中看到Shellshock 是继Heartbleed 之后的另一个更大的漏洞。 测试我们的Bash shell 是否易受攻击的代码是:

env X="() { :;} ; echo shellshock" /bin/sh -c "echo completed"

详细来说,这段代码究竟是如何工作的?代码env X="() { :;} ; 有什么作用?

如果我在 shell 易受攻击的 Linux 环境中托管网站,它是如何易受攻击的?它会被利用吗?

【问题讨论】:

标签: linux bash shell security shellshock-bash-bug


【解决方案1】:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

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 中的空语句。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    相关资源
    最近更新 更多