Apache默认配置支持解析CGI (Common Gateway Interface) (仅cgi-bin目录),不解析SSI(Server Side Includes)和.htaccess。当配置不当时,可能导致系统命令执行。本文由腾讯安全应急响应中心的Mark4z5同学通过实验来探讨开启解析CGI/SSI/.htaccess的危害以及安全建议。
一、安装实验环境

二、解析CGI (Common Gateway Interface)
http://httpd.apache.org/docs/current/howto/cgi.html

先看httpd.conf相关默认配置

可以看到默认/cgi-bin/目录可解析CGI,但是当打开网页时,并没有执行输出,

原因是程序默认并没有赋予X执行权限,

当赋予X执行权限后,

可以执行CGI,

那么当攻击者可以往/cgi-bin/目录写文件,或者服务器管理员配置某个可写目录解析CGI时,就会造成严重危害,执行系统命令。如

执行系统命令id并输出,

三、解析SSI (Server Side Includes)
http://httpd.apache.org/docs/current/howto/ssi.html

先看httpd.conf相关默认配置


默认并不解析SSI,开启解析可配置如下,


当攻击者上传.shtml文件时,可以执行任意系统命令。如

执行id并输出,

四、解析.htaccess
http://httpd.apache.org/docs/current/howto/htaccess.html
先看httpd.conf相关默认配置

默认并不解析.htaccess,当配置解析时

攻击者只要可以上传.htaccess文件和其他恶意文件,就可以让apache解析CGI/SSI来执行系统命令。如下,


五、安全建议
1、如果CGI&SSI非必需,则编译apache时禁用掉,参数为(--disable-cgi --disable-cgid --disable-include)
2、如果CGI&SSI为必需,则在httpd.conf配置可写目录禁止AllowOverride,且Options为FollowSymLinks。
<Directory "/usr/local/apache2/htdocs/YourPath">
Options FollowSymLinks
AllowOverride None
</Directory>
注:Options可以按需设置,但绝不能设置成ExecCGI或Includes;AllowOverride None是禁止解析.htaccess。
【最后】
已配置php安全模式的Apache并不完全能防止webshell执行系统命令,因为Apache本身支持CGI和SSI执行系统命令。
原味连接:blog.sina.com.cn/s/blog_e092fd2f0102v6oa.html
本文由腾讯安全应急响应中心人员通过实验探讨Apache开启解析CGI/SSI/.htaccess的危害。默认配置下,解析不当可能导致系统命令执行。攻击者可通过上传文件利用解析漏洞执行命令。文章还给出安全建议,如非必需编译时禁用,必需时配置可写目录等。

1万+

被折叠的 条评论
为什么被折叠?



