首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能解释一下这个"Shellshock“代码在shell中是如何工作的吗?

有人能解释一下这个"Shellshock“代码在shell中是如何工作的吗?
EN

Stack Overflow用户
提问于 2014-09-26 12:43:02
回答 1查看 1.1K关注 0票数 1

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

代码语言:javascript
复制
env X="() { :;} ; echo shellshock" /bin/sh -c "echo completed"

具体来说,这段代码到底是如何工作的呢?代码env X="() { :;} ;是做什么的?

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

EN

回答 1

Stack Overflow用户

发布于 2014-09-26 13:15:45

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

env是做什么的?

根据文档,env在修改后的环境中运行程序。

代码语言:javascript
复制
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

很明显,x是一个名称/变量,而() { :;}; echo vulnerable'是变量的值。

现在,什么是() { :;};

导出函数时,Bash将其防御存储为环境变量中的值:

代码语言:javascript
复制
$ x() {echo hello world;}
$ export x
$ env | grep x
x=() {echo hello world};

现在,当x='() {:;}'的意思类似于写

代码语言:javascript
复制
$ x() {:;}
$ export x
$ env | grep x

也就是说,我们间接地在env创建的新环境中创建了export x。这里的:是Bash中的null语句。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26052189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档