bypass disable提权:CVE-2014-6271(Bash破壳漏洞)

bypass disable:CVE-2014-6271(Bash破壳漏洞)

漏洞范围:

GNU Bash 版本小于等于4.3

GZlST.png

其实现在大多数的服务器的bash版本都超过了4.3,已经对这个漏洞就行了修复也就无法利用了,不过学习了一下这个漏洞也还是记录一下吧

漏洞成因:

目前的bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。核心的原因在于在输入的过滤中没有严格限制边界,没有做合法化的参数判断。

在补丁中主要进行了参数的合法性过滤,补丁程序在/builtins/evalstring.c的parse_and_execute函数中进行了输入的command进行了合法性的边界检测,将代码注入的可能性排除。在排除中主要用到了flags的两次判断和command的一次类型匹配,为了能够flags判断准确,在补丁中预先定义了SEVAL_FUNCDEF、SEVAL_ONECMD两个标识作为判断依据。

此漏洞进行的补丁更新有三处,主要进行输入的command进行过滤作用。

漏洞自查:
env x='() { :;}; echo Vulnerable CVE-2014-6271 ' bash -c "echo test"

执行命令后,如果显示Vulnerable CVE-2014-6271,证系统存在漏洞,可改变echo Vulnerable CVE-2014-6271为任意命令进行执行。

远程测试:

GZlST.png
GZWsM.png

漏洞可能会带来的影响
  1. 此漏洞可以绕过ForceCommand在sshd中的配置,从而执行任意命令。
  2. 如果CGI脚本用bash编写,则使用mod_cgi或mod_cgid的Apache服务器会受到影响。
  3. DHCP客户端调用shell脚本来配置系统,可能存在允许任意命令执行。
  4. 各种daemon和SUID/privileged的程序都可能执行shell脚本,通过用户设置或影响环境变量值,允许任意命令运行。

参考文章:

https://www.jianshu.com/p/e684a3b73939

https://www.antiy.com/response/CVE-2014-6271.html

上一篇
下一篇