Bash远程执行漏洞“破壳”
[注:bash版本要在4.1以下]
bash引自维基百科的描述为:
"bash,Unix shell的一种。1989年发布第一个正式版本,原先是计划用在
GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。它也被移植到Microsoft Windows上的Cygwin与MinGW,或是可以在MS-DOS上使用的DJGPP项目。在Novell NetWare与Andriod在上也有移植。"
漏洞原理:
目前的bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以 “(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出, 而是继续解析并执行shell命令。核心的原因在于在输入的过滤中没有严格限 制边界,没有做合法化的参数判断,此漏洞会错误的将“{}”花括号外的命令进 行执行。
本地验证方法:
在shell中执行下面命令: env x=’() { :;}; echo Vulnerable CVE-2014-6271 ’ bash
-c “echo test” 执行命令后,如果显示Vulnerable CVE-2014-6271,证系统存在漏洞,可改变echo Vulnerable CVE-2014-6271为任意命令进行执行。