PHP-CGI远程任意代码执行漏洞(CVE-2012-1823)修复方案

  首先介绍一下这个漏洞,其实是在apache调用php解释器解释.php文件时,会将url参数传我给php解释器,如果在url后加传命令行开关(例如-s、-d 、-c或

-dauto_prepend_file%3d/etc/passwd+-n)等参数时,会导致源代码泄露和任意代码执行。

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

  既然出现了,那就补吧,以下都是自己亲身经验,本着开源精神,做个分享,欢迎留言!

  三种方案:

    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/

     补丁作用:其实就是增加了一个判断,如果是普通的cgi方式,命令行-s等参数就不再处理,遗憾的是验证的时候,补丁和我当时的php版本不一致,所以补丁一直打不上。

      后来索性改源码吧,把补丁手动打上,涉及到sapi/cgi/cgi_main.c这个文件。在main函数中,搜索php_getopt用下面这行替换,一共有两处。

     if (!cgi) while ((c = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0)) != -1)

     替换后就是重新编译安装,经我验证完美解决。

       最后上传cgi_main.c文件,有需要的可以直接下载覆盖。

     下载地址:http://files.cnblogs.com/files/virgree/cgi_main.rar

时间: 2024-11-05 13:28:16

PHP-CGI远程任意代码执行漏洞(CVE-2012-1823)修复方案的相关文章

ElasticSearch远程任意代码执行漏洞(CVE-2014-3120)分析

原理 这个漏洞实际上非常简单,ElasticSearch有脚本执行(scripting)的功能,可以很方便地对查询出来的数据再加工处理. ElasticSearch用的脚本引擎是MVEL,这个引擎没有做任何的防护,或者沙盒包装,所以直接可以执行任意代码. 而在ElasticSearch里,默认配置是打开动态脚本功能的,因此用户可以直接通过http请求,执行任意代码. 其实官方是清楚这个漏洞的,在文档里有说明: First, you should not run Elasticsearch as

【知道创宇404实验室】致远OA系统远程任意代码执行高危安全漏洞预警

今日(2019年6月26日),互联网上有安全研究者预警并发布了关于致远OA系统的高危安全漏洞,***者可以通过某接口漏洞在未授权的情况下实现远程任意代码执行,最终控制整个系统权限.据悉致远OA系统是由用友致远互联旗下协同管理软件系统,在国内很多央企.大型公司都有广泛应用. 知道创宇404实验室立即启动漏洞应急流程,确定该漏洞存在致远OA系统某些型号及版本中某Servlet接口缺少必要的安全过滤,最终允许***者远程执行任意代码,并且该接口无需认证即可访问,危害巨大. 通过知道创宇旗下ZoomEy

20.Ecshop 2.x/3.x SQL注入/任意代码执行漏洞(附实战exp)

Ecshop 2.x/3.x SQL注入/任意代码执行漏洞 影响版本: Ecshop 2.x Ecshop 3.x-3.6.0 漏洞分析: 该漏洞影响ECShop 2.x和3.x版本,是一个典型的"二次漏洞",通过user.php文件中display()函数的模板变量可控,从而造成SQL注入漏洞,而后又通过SQL注入漏洞将恶意代码注入到危险函数eval中,从而实现了任意代码执行. 值得一提的是攻击者利用的payload只适用于ECShop 2.x版本导致有部分安全分析者认为该漏洞不影响

php 168任意代码执行漏洞之php的Complex (curly) syntax

今天了解了php 168的任意代码执行漏洞,Poc: http://192.168.6.128/pentest/cms/php168/member/post.php?only=1&showHtml_Type[bencandy][1]={${phpinfo()}}&aid=1&job=endHTML 通过代码审计得知,最后会执行 eval("\$array[showurl]=\"$filename_b\";"); 而$filename_b最终值

漏洞预警 | Apache Struts2 曝任意代码执行漏洞 (S2-045)

近日,Apache官方发布Apache Struts 2.3.5–2.3.31版本及2.5–2.5.10版本存在远程代码执行漏洞(CNNVD-201703-152 ,CVE-2017-5638)的紧急漏洞公告.该漏洞是由于上传功能的异常处理函数没有正确处理用户输入的错误信息,导致远程攻击者可通过发送恶意的数据包,利用该漏洞在受影响服务器上执行任意命令. 漏洞危害 攻击者可在HTTP请求头部中的Content-Type字段构造恶意代码利用该漏洞,在受影响服务器上执行系统命令,进一步可完全控制该服务

Drupal Core 8 PECL YAML 反序列化任意代码执行漏洞(CVE-2017-6920

漏洞背景:2017年6月21日,Drupal官方发布了一个编号为CVE-2017- 6920 的漏洞,影响为Critical.这是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. 漏洞复现:1.打开网页先登录一个管理员账号.2.访问 http://你的ip:8080/admin/config/development/configuration/single/import3.然后如下图所示:第二个随便填.poc:!php/object

phpcms前台任意代码执行漏洞(php&lt;5.3)

phpcms v9 中 string2array()函数使用了eval函数,在多个地方可能造成代码执行漏洞 /phpsso_server/phpcms/libs/functions/global.func.php /** * 将字符串转换为数组 * * @param string $data 字符串 * @return array 返回数组格式,如果,data为空,则返回空数组 */ function string2array($data) { if($data == '''') return

[2012-4-10]ThinkPHP框架被爆任意代码执行漏洞

昨日(2012.04.09)ThinkPHP框架被爆出了一个php代码任意执行漏洞,黑客只需提交一段特殊的URL就可以在网站上执行恶意代码. ThinkPHP作为国内使用比较广泛的老牌PHP MVC框架,有不少创业公司或者项目都用了这个框架.不过大多数开发者和使用者并没有注意到本次漏洞的危害性,提醒:此漏洞是一个非常严重的问题,只要使用了thinkphp框架,就可以直接执行任意php代码,使用thinkphp框架的各位站长赶快对自己的网站进检测,并修复. 修复方法: 1.下载官方发布的补丁: h

Discuz! 6.x/7.x 版本 前台任意代码执行漏洞

一.漏洞原理: 由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致Discuz! 6.x/7.x 全局变量防御绕过漏洞. include/global.func.php代码里: 01 function daddslashes($string, $force = 0) { 02         !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc