这几天Linux用户们看来不能愉快地玩耍了,红帽安全团队昨天爆出一个危险Bash Shell漏洞。称其带来的威胁可能比早前披露的“心脏出血”漏洞更大更强!

bash

 

 

 

 

 

 

 

 

 

Bash是Linux用户广泛使用的一款用于控制命令提示符的工具,这个最新被披露的bash漏洞代号为Bash bug或Shellshock。

当用户正常访问时,只要shell是唤醒状态,这个漏洞就允许攻击者执行任意代码命令,简直就是为各种各样的黑客攻击敞开 了大门!更糟的是,这个漏洞在企业级软件中存在好长时间了!

可是对每一个漏洞实例的修补是说起来容易做起来难!好在红帽公司和Fedora已经发布了漏洞补丁,但是谷歌安全研究员Tavis Ormandy在Twitter上表示,Linux系统提供商推出的补丁似乎“并不完整”,这引发了安全专家们的有一阵担忧~

我还会告诉你,这个漏洞还影响了苹果MAC OS X吗?但是截至目前,苹果公司还没有任何消息表明将发布漏洞修复。

 

某网络安全公司工程部经理Tod Beardsley也警告称,Bash漏洞的严重级别为“10”。它与“心脏出血”漏洞不同,“心脏出血”只能借助窃取用户电脑信息,而bash 漏洞允许黑客远程控制电脑,拿到系统最高权限!其方法利用就更简单了——复制/粘贴一行命令代码即可!

安全勘误员 Robert David已经将Bash漏洞与"心脏出血“做对比,发现bash 漏洞对系统安全的影响将长期存在,并且广泛影响。“软件有一个巨大的比例是以某种形式相互影响着的,我们将永远无法找出软件易受bug影响编目在哪里!"伯克利大学ICSI技术研究员也很悲观地同意Robert David的看法!他补充说道:“这bug很微妙,很邪恶,并将会伴随我们多年。”

redhat官方提供检测方式

运行命令:

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

如果返回如下内容,则请尽快升级。

 vulnerable
 this is a test

这次BASH爆出来远程代码执行的漏洞编号为CVE-2014-6271。

BASH除了可以将shell变量导出为环境变量,还可以将shell函数导出为环境变量!当前版本的bash通过以函数名作为环境变量名,以“(){”开头的字串作为环境变量的值来将函数定义导出为环境变量。

此次爆出的漏洞在于BASH处理这样的“函数环境变量”的时候,并没有以函数结尾“}”为结束,而是一直执行其后的shell命令!例如

112

 

 

 

 

目前,接受HTTP命令的CGI Shell脚本是最主要的被攻击对象。一个常见的HTTP请求是这样:

GET /path?query-param-name=query-param-value HTTP/1.1
Host: www.example.com
Custom: custom-header-value

CGI标准将http请求的所有部分都映射到了环境变量。例如对于Apache的Httpd,字串(){可以出现在以下这些地方:

* Host (“www.example.com”, as REMOTE_HOST)
* Header value (“custom-header-value”, as HTTP_CUSTOM in this example)
* Server protocol (“HTTP/1.1”, as SERVER_PROTOCOL)

通过自定义这些参数的值为“函数环境变量”的形式,就可以远程执行命令!!!例如:

curl -H User-Agent: () { :;}; echo fuck you! http://xxxxx/victim.sh

此外,OpenSSH也因其AcceptEnv、TERM、SSH_ORIGINAL_COMMAND等环境变量受此漏洞影响。目前还有更多的受影响程序和利用方式正在不断地被发掘出来!

 

利用脚本

 

https://github.com/ctxis/ActiveScanPlusPlus/blob/master/activeScan%2B%2B.py

http://p2j.cn/?p=1495

http://www.exploit-db.com/exploits/34766/

源链接

Hacking more

...