分享

Linux系统曝出了有史以来最严重的安全漏洞?

 昵称10236009 2014-09-29

微博上多位国内权威安全专家认为,Linux Bash漏洞(破壳漏洞,ShellShock漏洞)可以说震惊互联网。美国国家网络安全部门对此漏洞的总体严重性打分为10分,即最具破坏力的评分。相比之下,“心脏出血”漏洞只有 5 分。


由于Linux广泛应用于众多的企业和网站服务器中,Linux Bash漏洞(破壳漏洞,ShellShock漏洞)带来的危害程度比几个月前的OpenSSL“心脏出血”漏洞更为严重。


采用Linux系统的网站、路由器等系统一旦因为Bash“破壳”(ShellShock)漏洞被黑客入侵,网民提交到这些系统的数据就存在被泄露的风险。若一些大型网站的数据信息泄露,大量普通网民将再次沦为受害者。另外,黑客通过“破壳”(ShellShock)漏洞还有可能远程控制这些Linux服务器,使之变成攻击或入侵其他系统的傀儡设备。


Bash是一种用于处理计算机指令的语言翻译器,管理用户与操作系统之间的交互。大多数Linux系统和苹果的Mac OS X都采用了Bash。举例方便普通网民理解,Bash就相当于Windows的cmd或DOS下的command,普通网民拿鼠标操作电脑,专业人士或黑客拿Windows命令行或linux Bash命令、脚本去操作电脑完成任何任务。


接下来详细说说“破壳”(ShellShock)漏洞。


漏洞起源:

漏洞信息最早来源于国外知名漏洞网站exploit-db下的第34765篇漏洞报告,其中出现了一条验证命令:

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


如果在一个含有版本号小于bash 4.3的linux或者unix系统上执行以上命令,可能会得到以下输出:

vulnerable

this is a test

其中如果出现第一行vulnerable则说明该系统存在一个由bash程序缺陷导致的任意命令执行漏洞。


漏洞原理及分析:

该脚本的出现引起了技术人员的极大关注,其中env为一个系统命令,该命令让系统创建一个环境变量x='() { :;}; echo vulnerable'并且带着这个环境变量的值执行bash -c “echo this is a test”。


第一行输出的”vulnerable”暴露了漏洞的存在,因为函数定义’() { :;};’之后的’echo vulnerable’指令本不该被执行却被执行。对bash详细分析后得知bash在处理含有函数定义诸如”() { :;};”的环境变量赋值的代码上存在设计缺陷,错误地将函数定义后面的字符串作为命令执行。

所以真正的利用与env命令无关,只要设法让系统接受一个含有”[函数定义]+[任意命令]”的环境变量赋值则可触发”[任意命令]”部分所表示的代码执行。


漏洞存在条件:

任何已知程序,只要满足以下两个条件就可以被用来通过bash漏洞导致任意命令执行:

1、程序在某一时刻使用bash作为脚本解释器处理环境变量赋值;

2、环境变量赋值字符串的提交取决于用户输入。


漏洞利用演示:

以下给出一个可能出现的应用案例,该案例通过进攻一个基于bash的cgi应用页面获取目标计算机的远程shell。

首先有一个基于bash的cgi网页应用存在于Apache服务器的cgi-bin目录下,cgi脚本内容为:

使用正常浏览器访问结果为一个普通页面:


但是我们可以通过curl等模拟http请求的工具构造一个不同寻常的http请求,命令如下:


该命令生成一个含有自定义字段”A_Custom_Header”的请求发给远程的基于Apache的cgi服务器,该字段的值被设置为一个可以触发该bash漏洞的字符串,其中的”/bin/bash......0>&1”是被执行在远程主机上的命令,作用是反弹一个远程bash shell(也可以是其它shell)到黑客主机的8080端口。


被请求的cgi页面为10.20.230.63/cgi-bin/vu。而在黑客主机上使用netcat监听8080端口等待被黑服务器的远程连接:


执行上面的curl命令后发生了以下几件事情:

1、远程主机使用bash解释器创建一个名为”A_Custom_Header”的环境变量并赋值为”() { :;}; /bin/bash......0>&1”;

2、由于存在漏洞,bash“顺便”将’/bin/bash......0>&1’作为命令执行;

3、用户提交的恶意命令创建一个/bin/bash进程并创建socket将bash的IO链接至黑客机器10.20.230.63:8080(该测试案例中黑客机器和服务器为同一台机器,当然可以不同);


4、黑客主机的netcat收到来自被攻击服务器的socket链接,并获取远程shell的IO如下图:

获得了一个daemon用户的远程shell;

5、黑客可以使用该用户身份执行其它命令,实现了远程攻击。


以上报告来自金山毒霸安全中心的分析。有关“破壳”(ShellShock)漏洞的更多消息,请感兴趣的网友关注各个安全公司的报告。


在新浪微博上看到国内众多安全专业人士围绕“破壳”(ShellShock)漏洞展开各种攻击尝试,如果linux服务器存在这个漏洞,意味着一切皆有可能。


现在,安全圈的人忙疯了,服务器运维团队忙疯了。如果他们不先忙疯,或者真的忙疯了,出现疏漏,下一步,就该普通网友忙疯了……



======== 修复最终解决方案 ==================

【漏洞检测方法】
漏洞检测命令:env x='() { :;}; echo vulnerable' bash -c "echo this is a test"  
 
修复前 
输出:   
vulnerable  
this is a test 
 
使用修补方案修复后
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x' 
this is a test
特别提示:该修复不会有任何影响,如果您的脚本使用以上方式定义环境变量,修复后您的脚本执行会报错。 

【建议修补方案 】
请您根据Linux版本选择您需要修复的命令, 为了防止意外情况发生,建议您执行命令前先对Linux服务器系统盘打个快照,
如果万一出现升级影响您服务器使用情况,可以通过回滚系统盘快照解决。
 
centos: 
yum -y update bash
 
ubuntu: 
14.04 64bit
wget http://download.wx.:8000/hotfix/bash_4.3-7ubuntu1.1_amd64.deb && dpkg -i bash_4.3-7ubuntu1.1_amd64.deb
 
14.04 32bit
wget http://download.wx.:8000/hotfix/bash_4.3-7ubuntu1.1_i386.deb && dpkg -i  bash_4.3-7ubuntu1.1_i386.deb
 
12.04 64bit
wget http://download.wx.:8000/hotfix/bash_4.2-2ubuntu2.2_amd64.deb && dpkg -i  bash_4.2-2ubuntu2.2_amd64.deb
 
12.04 32bit
wget http://download.wx.:8000/hotfix/bash_4.2-2ubuntu2.2_i386.deb && dpkg -i  bash_4.2-2ubuntu2.2_i386.deb
 
10.× 64bit
wget http://download.wx.:8000/hotfix/bash_4.1-2ubuntu3.1_amd64.deb && dpkg -i bash_4.1-2ubuntu3.1_amd64.deb
 
10.× 32bit
wget http://download.wx.:8000/hotfix/bash_4.1-2ubuntu3.1_i386.deb && dpkg -i bash_4.1-2ubuntu3.1_i386.deb
 
debian: 
7.5 64bit && 32bit
apt-get -y install --only-upgrade bash
 
6.0.x 64bit
wget http://download.wx.:8000/hotfix/bash_4.1-3+deb6u1_amd64.deb &&   dpkg -i bash_4.1-3+deb6u1_amd64.deb 
 
6.0.x 32bit
wget http://download.wx.:8000/hotfix/bash_4.1-3+deb6u1_i386.deb &&   dpkg -i bash_4.1-3+deb6u1_i386.deb 
opensuse
13.1 64bit 
wget http://download.wx.:8000/hotfix/bash-4.2-68.4.1.x86_64.rpm && rpm -Uvh bash-4.2-68.4.1.x86_64.rpm
 
13.1 32bit
wget http://download.wx.:8000/hotfix/bash-4.2-68.4.1.i586.rpm && rpm -Uvh bash-4.2-68.4.1.i586.rpm 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多