PHP-CGI远程源码泄露和任意代码执行漏洞(CVE-2012-1823)
PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。可以被各种Web服务器以多种方式调用,实现动态网页的功能。
PHP处理参数的传递时存在漏洞,PHP 5.3.12和5.4.2之前的5.4.x中的sapi/cgi/cgi_main.c,当配置为CGI脚本(aka php-cgi)时,没有正确处理缺少“=”字符的查询字符串,在特定的配置情况下,远程攻击者可能利用此漏洞在服务器上获取脚本源码或执行任意命令。
当PHP以特定的CGI方式被调用时(例如Apache的mod_cgid),php-cgi接收处理过的查询格式字符串作为命令行参数,允许命令行开关(例如-s、-d 或-c)传递到php-cgi程序,导致源代码泄露和任意代码执行。FastCGI不受影响。
<*来源:eindbazen
链接:http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/
http://ompldr.org/vZGxxaQ
http://zone.wooyun.org/content/151
http://www.php-security.net/archives/9-New-PHP-CGI-exploit-CVE-2012-1823.html
http://www.php-security.net/archives/11-Mitigation-for-CVE-2012-1823-CVE-2012-2311.html
*>
解决方法
临时解决方法:
使用Mod_Rewrite来过滤请求:
RewriteRule规则如下
RewriteEngine on
RewriteCond %{QUERY_STRING} ^[^=]*$
RewriteCond %{QUERY_STRING} %2d|\- [NC]
RewriteRule .? - [F,L]
厂商补丁:
PHP
---
目前厂商已经在5.3.13及5.4.3两个版本中修复了这个安全问题,请密切关注厂商网站下载最新版本:
http://www.php.net

浙公网安备 33010602011771号