当前位置: 代码迷 >> 综合 >> 运维安全之Apache(CGISSI.htaccess)安全隐患
  详细解决方案

运维安全之Apache(CGISSI.htaccess)安全隐患

热度:77   发布时间:2024-01-05 12:36:34.0

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

一、安装实验环境

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

 

二、解析CGI (Common Gateway Interface)

 

http://httpd.apache.org/docs/current/howto/cgi.html

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

先看httpd.conf相关默认配置

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

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

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

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

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

当赋予X执行权限后,

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

可以执行CGI,

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

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

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

执行系统命令id并输出,

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

 

三、解析SSI (Server Side Includes)

 

http://httpd.apache.org/docs/current/howto/ssi.html

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

先看httpd.conf相关默认配置

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患运维安全之Apache(CGI&SSI&.htaccess)安全隐患

 

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

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患运维安全之Apache(CGI&SSI&.htaccess)安全隐患

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

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

执行id并输出,

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

四、解析.htaccess

 

http://httpd.apache.org/docs/current/howto/htaccess.html

 

先看httpd.conf相关默认配置

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

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

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患

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

 

运维安全之Apache(CGI&SSI&.htaccess)安全隐患运维安全之Apache(CGI&SSI&.htaccess)安全隐患

五、安全建议

       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

  相关解决方案