微博上多位国内权威安全专家认为,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页面为http://10.20.230.63/cgi-bin/vul_cgi。而在黑客主机上使用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 |
|
来自: 昵称10236009 > 《Linux》